[VBA] Aide sur prog macro Excel

Fermé
ancelot101 Messages postés 2 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 13 mars 2007 - 13 mars 2007 à 18:42
 20100 - 22 avril 2007 à 13:45
Bonjour,
Bonjour,
Je suis très très novice et j'ai à manipuler des macros excel.. J'ai besoin, à partir d'adresses e-mails saisies sur excel, les joindre bout à bout en les séparant de virgules... au début j'ai opté pour ceci

Dim iFile As Integer 
Dim chaine(41) As String 


Range("H8").Select 
chaine(1) = ActiveCell.Text 
Range("H9").Select 
chaine(2) = ActiveCell.Text 
.... 
Range("H47").Select 
chaine(40) = ActiveCell.Text 
Range("H48").Select 
chaine(41) = ActiveCell.Text 

iFile = FreeFile 

Open "C:\Liste_diffusion_créée.txt" For Output As #iFile 

Print #iFile, Join(chaine, ", ") 
...


Bonjour,
Je suis très très novice et j'ai à manipuler des macros excel.. j'ai besoin, sur un tableau d'annuaire avec plusieurs adresses mails, de joindre les différentes adresses en un fichier texte séparés par des virgules, j'avais opté au début pour ce code

Dim iFile As Integer
Dim chaine(41) As String


Range("H8").Select
chaine(1) = ActiveCell.Text
Range("H9").Select
chaine(2) = ActiveCell.Text
....
Range("H47").Select
chaine(40) = ActiveCell.Text
Range("H48").Select
chaine(41) = ActiveCell.Text

iFile = FreeFile

Open "C:\Liste_diffusion_créée.txt" For Output As #iFile

Print #iFile, Join(chaine, ", ")


Le problème c'est que cette solution sort toutes les adresses mails et ne prend pas en compte le filtre... y a-t-il un moyen plus judicieux? J'avais pensé à la possibilité de demander à l'utilisateur de sélectionner une plage de données, et d'y travailler ensuite mais là encore je ne sais pas quel opérateur permet de le faire...
Merci d'avance pour vos réponses...
A voir également:

1 réponse

Une astuce est de faire une sélection, de la copiée et de la collée dans un coin ...
Bon ok c'est pas clean mais ca fonctionne .. :-D
    Range("A3:A12").Select
    Selection.Copy
    Range("D20").Select
    ActiveSheet.Paste


Une petite astuce de codage ..
plutôt que d'accéder directement au cellules en les nommant ( range("A13") )

Je te propose d'utiliser
    NoLigne = 1
    NoColone = 1
    for NoLigne = 1 to 40
        chaine(NoLigne) = Cells(NoLigne, NoColone).Value
    next NoLigne


ce code parcoure une zone de 40 lignes
NoLigne est incrémenté par la boucle For et vas de la valeur 1 à 40
NoColone = 1 c'est la colonne A



(par contre ce code ne tien pas conte lui aussi des filtre ..
donc commence à faire une copie dans un autre endroit de ton classeur et après tu parcoure ta liste

TFlorian.
0
Merci bocoup TFLorian ca marche à merveilles
comme quoi faut etre un minimum intelligent pour réussir dans la vie.. :)
0
Mr Torture?

Loul c'est 20100
0