[VBA] Aide sur prog macro Excel

ancelot101 Messages postés 2 Statut Membre -  
 20100 -
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...
Configuration: Windows XP
Internet Explorer 6.0

1 réponse

  1. TFlorian
     
    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
    1. saad
       
      Merci bocoup TFLorian ca marche à merveilles
      comme quoi faut etre un minimum intelligent pour réussir dans la vie.. :)
      0
    2. 20100
       
      Mr Torture?

      Loul c'est 20100
      0