Aide sur une fonction excel

frederic.pauze frederic.pauze
3 contributions
Membre depuis le 31/07/2006
Envoyé le 31/07/2006 à 21:30


Bonjour, enfin plutot bonsoir.

J\'ai besoin d\'écrire une fonction qui à partir d\'une colonne contenant une adresses par ligne me donne une mailing list dans une case.

Visuellement ca donne:

AVANT:

|titre1 | titre2 | titre 3
| |adresse1 |
| |adresse2 |
| |adresse3 |
| |adresse4 |
| |adresse5 |
| |adresse6 |



APRES:

adresse1; adresse2; adresse3 etc....

toute la liste formatée dans une seule cellule

Voila, je crois que tout est dit... ah si il faut aussi ne pas avoir à tenir compte du nombre de ligne (quand on ajoute un utilisateur et donc son adresse ca part dans la liste dynamiquement.

J\'ai comencé des trucs moches à partir d\'une boucle de concat mais ca ne marche pas: normal je n\'ai jamais fait ca avant.

Merci a celui qui sauras trouver une solution simple.





Pegase Pegase
1 023 contributions
Membre depuis le 07/02/2002
Envoyé le 01/08/2006 à 00:56 Modifié par Modifié par Pegase le 01/08/20


Bonjour frederic.pauze et bienvenue,

Pour faire ce que tu veux, il faut créer une macro en VBA
As tu déjà fait des macros ? Si non dis le moi je t'expliquerais

Si oui voici la macro à recopier

Sub Adresses()
Dim Ln As Integer, I As Integer
Dim liste As String
Cells(65536, 1).Select
ActiveCell.End(xlUp).Select
Ln = ActiveCell.Offset(0, 0).Range("A1").Row
liste = Cells(1, 1)
For I = 2 To Ln
liste = liste & ";" & Cells(I, 1)
Next I
Cells(Ln + 1, 1).Value = liste
End Sub

Quelques explications :
Les lignes commençant par Dim sont les déclarations des variables
Cells(65536, 1).Select et ActiveCell.End(xlUp).Select détermine la dernière ligne renseignée
Ensuite on créée la liste par concaténation >> jusqu' à Next I
Puis on vient écrire cette liste dans la cellule qui suit la dernière cellule renseignée

Voici un exemple

Exemple Adresse

PS : J'ai ajouté un ; (point virgule) entre chaque adresse car j'ai cru comprendre que c'était pour envoyer par mail

Pour lancer la macro, quand ton fichier excel est ouvert tu fais Alt+F8 et tu double-cliques sur le nom de la macro (ici Adresses)

Si tu ne comprends pas demande, et tiens nous au courant
Bon courage

Pégase
Moi, le jour où j'aurai vraiment mon âge, je mourrai (Léo Ferré).
frederic.pauze frederic.pauze
3 contributions
Membre depuis le 31/07/2006
Envoyé le 01/08/2006 à 01:55 Modifié par Modifié par frederic.pauze le


Merci Pégase,

Effectivement mon problème c\'est le langage, j\'ai jamais touché ca à la fac.
J\'avais pensé le truc en CAMEL ... j\'ai évité de mentionner ca a mon chef, il se serait apperçu que je sort de la fac contrairement avec mes collègues ;-)

Tu aurais un bon bouquin/site à me conseiller sur le sujet pour qqun qui à déja codé dans d\'autres langages ?

Frédéric

Si quelqu\'un à un link sur la façon d\'utiliser le code (j\'ai essayé alt f8, ca n\'a pas donné grand chose), ca serait sympa, merci.

Pegase Pegase
1 023 contributions
Membre depuis le 07/02/2002
Envoyé le 01/08/2006 à 11:07 Modifié par Modifié par Pegase le 01/08/20


CAMEL je ne connais pas

j'ai évité de mentionner ca a mon chef, il se serait apperçu que je sort de la fac contrairement avec mes collègues

Si c'est un chef perspicace, il le sait déjà, en plus à l'embauche tu as forcément fourni un CV alors... mais c'est un autre sujet.

j'ai essayé alt f8, ca n'a pas donné grand chose

Comment as tu fais ?

Je vais essayé de t'aider
D'abord pour les essais travailler sur une copie de ton fichier ou fais comme moi écris un fichier bidon avec 5 ou 6 adresses.
Quand ton fichier Excel est ouvert tu appuis sur les touches Alt et F11[Alt+F11]
Une fenêtre s'ouvre >> Insertion / Module
Tu recopies la macro que je t'ai donné (Tu peux faire un copier/coller)

Adresse2
Tu peux fermer la fenêtre "Microsoft Visual Basic..."

Pour créer un raccourci
Touches Alt+F8
Tu sélectionne ta macro ici Adresses
Dans le champ "Macro dans" tu choisis "Ce classeur" puis "Option"
Dans la case "Touche de raccourci tu tapes ce que tu veux ici L

Adresses3
Pour laner la macro depuis la feuille source : Ctrl+Maj+L (dans mon exemple)

Si tu veux mettre le résultat de ta macro dans une autre cellule que la cellule qui suit la dernière cellule renseignée, il faut que tu changes la ligne : Cells(Ln + 1, 1).Value = liste
en : Range("A2").Value = liste
Ou A2 est la cellule dans laquelle tu veux écrire le résultat.

Maintenant si tu veux écrire ton résultat dans une cellule d'une autre feuille, ce qui sera beaucoup plus pratique, voici le listing de la macro
avec les hypothèse suivantes :
Le fichier d'origine est dans la feuille 1
Le résultat sera écrit dans la feuille 2 dans la cellule A2
Tu peux modifier ce qui est en gras
Ce qui est après le ' et en italique sont des commentaires à l'intérieure du programme. Tu peux les laisser

Sub Adresses()
Dim Ln As Integer, I As Integer
Dim liste As String
Sheets(1).Select ' Sélection de la feuille source

Cells(65536, 1).Select
ActiveCell.End(xlUp).Select
Ln = ActiveCell.Offset(0, 0).Range("A1").Row
liste = Cells(1, 1)
For I = 2 To Ln
liste = liste & ";" & Cells(I, 1)
Next I

Sheets(2).Select ' Sélection de la feuille résultat
Range("A2").Value = liste ' Ecriture du résultat dans la cellule A2
End Sub

Moi, le jour où j'aurai vraiment mon âge, je mourrai (Léo Ferré).
frederic.pauze frederic.pauze
3 contributions
Membre depuis le 31/07/2006
Envoyé le 01/08/2006 à 11:36


Merci beaucoup pour les détails, j\'ai bidouillé de mon coté et ca marche, a part que j\'ai laissé en \"dur \" la colonne concernée. Au final j\'ai fait ce qu\'il convien de faire 3h du mat qd on doit finir le job: des essais foireux jusqu\'a ce que ca marche !



La joke sur mon chef c\'est parceque je suis dans une boite ou il n\'y a quasiment que des ecoles d\'ingé, mon \"chef\" a bien lu mon cv mais surement pas longtemps car je viens de débouler sur un projet de 100+ personnes hors de la france. Il n\'a donc pas la possibilité de savoir que j\'ai entendu pendant 5 ans \"Excel c\'est le diable, faut pas y toucher !\"

Le fait que tu connaisse pas CAMEL est plutot bon pour ton avenir, c\'est un trés joli jouet ...
qui ne sort pas du bac à sable de l\'enseignement :-(

Pour éviter de relancer un appel au secour de boulet sauvage je suis preneur de toute info (liens ?) sur une bonne (complète et lisible) source (site/bouquin) concernant les macros et le VBA.

Pegase Pegase
1 023 contributions
Membre depuis le 07/02/2002
Envoyé le 01/08/2006 à 12:01


plutot bon pour ton avenir

Bof mon avenir j\'en suis presque maître [:D] Je suis en retraite...

Pour éviter de relancer un appel au secour

Mémoclic est fait pour cela.

j\'ai laissé en \"dur \" la colonne concernée

(?) (?) Comprend pas ce que tu veux dire.

Pour les bouquins j\'en ai 2 je les cherche et te redonne les noms et une sélection de site
A+
Moi, le jour où j'aurai vraiment mon âge, je mourrai (Léo Ferré).
Pegase Pegase
1 023 contributions
Membre depuis le 07/02/2002
Envoyé le 02/08/2006 à 01:24


Comme promis, voici quelques liens. Je ne les ai pas revérifié, j\'espère qu\'ils fonctionnent toujours.

www.excelabo.net/index.php
longre.free.fr/pages/prog/
ericrenaud.free.fr/index.html
www.gaboly.com/VBA/index.html
access.developpez.com/
support.microsoft.com/newsgroups/default.aspx?ICP=GSS3&NewsGroup=microsoft.public.fr.excel&SLCID=FR&sd=GN&id=fh;FR;NEWSGROUPS
www.google.fr/advanced_group_search?q=group:microsoft.public.fr.excel
www.excelabo.net/index.php
www.info-3000.com/vbvba/index.php
vb.developpez.com/

Comme livre j\'ai pas mal utilisé
Excel & VBA 2003 200/XP édition 4 de Mikaêl Bidault Editeur Campus Press

As tu essayé ma macro ?

Bon courage
Pégase
Moi, le jour où j'aurai vraiment mon âge, je mourrai (Léo Ferré).
* ignatius
Anonyme
Envoyé le 02/02/2008 à 15:25

Bonjour,
rien à voir avec ton post.
enfin ça n\'a peut-etre même rien à voir avec toi(!), je t\'explique:
je recherche un vieux pote homonyme à ton nom, donc si tu as 29-30 ans et que tu habitais valence (drôme) dans les années 93/96 et ben on se connait...
si tu veux me recontacter (je suis brice), c\'est simple tu n\'as qu\'a créer un compte hotmail à cette adresse :
fredericpauze@hotmail.fr
(j\'ai créer ce contact sur mon msn)
voilà, si je me suis trompé de personne: désolé!!
brice


Discussion trop ancienne

Cette discussion a été automatiquement fermée car elle n'a plus reçue de nouveau message depuis trop longtemps.

Nous vous suggérons de créer un nouveau message

« Retour sur la liste des messages de ce forum