Copie VBA de données triées

Bonjour à tous,

Je suis nouveau sur le forum et donc je vais faire de mon mieux pour être clair dans ma question (je précise d'entrée que je n'ai pas trouvé de réponse dans les questions déjà posées)

Alors :

J'ai composé une liste Excel qui reprend l'ensemble des agents d'une entreprise (256) , cette liste comporte 17 champs différents et entre autre les champs "Mail Pro" et "Mail Perso"

Mon but est de pouvoir faire du tri sur l'ensemble des champs et ensuite de copier successivement les adresses mails, d'en créer une chaîne de caractères avec des ";" (points virgule) entre chaque adresse et d'envoyer le tout dans le presse-papier.

Aujourd'hui tout cela fonctionne bien à condition que je ne fasse aucun triage (liste complète), mais dès que je fais un tri (visible à l'écran) mon code passe en revue malgré tout les cellules non sélectionnées.

Ma question est la suivante : comment faire pour que le code ne s'arrête que sur les cellules triées et pas sur les autres ?

Je copie ci-dessous le code utilisé :

Private Sub Bt_CopyMailsPerso_Click()
Dim MSForm As Object
Dim presse_papier As String

Range("K8").Select
Do While Not ActiveCell = ""
    presse_papier = presse_papier & ActiveCell.Value & ";"
    ActiveCell.Offset(1, 0).Select
Loop

    Set MSForm = New DataObject
        MSForm.SetText (presse_papier)
        MSForm.PutInClipboard
    Set MSForm = Nothing

End Sub

Déjà merci pour votre temps et aussi pour votre aide

Bonjour,

voici un exemple si votre liste est sous forme de Tableau,

Sub test()
With ActiveSheet.ListObjects("Tableau1")
        Set Valeur_visibles = .ListColumns(2).DataBodyRange.SpecialCells(xlCellTypeVisible)
        For Each v In Valeur_visibles
          Debug.Print v
        Next
End With
End Sub

Bonjour et merci i20100 pour votre aide !

J'aurais besoin de deux infos pour essayer votre proposition :

  • Dans l'exemple, est-ce que "Tableau1" doit être une plage nommée qui reprend toutes les données de la colonne triée ? (K dans mon cas) ?
  • Est-ce que "Valeur_visibles" est une variable que je dois définir comme String ?

Si j'exécute le code tel que proposé cela provoque une erreur d'exécution '9' "L'indice n'appartient pas à la sélection", j'ai tenté de comprendre l'aide de Microsoft mais vous aurez compris que je ne suis pas un kador Excel ...

Merci encore pour votre aide

- Dans l'exemple, est-ce que "Tableau1" doit être une plage nommée qui reprend toutes les données de la colonne triée ? (K dans mon cas) ?

pour transformer la plage de cellule en tableau, sélectionne les cellules de la plage,

et sélectionne au menu, Insertion, Tabeau

- Est-ce que "Valeur_visibles" est une variable que je dois définir comme String ?

non,

Dim Valeur_visibles As Range, vv As Range

Encore merci i20100 pour votre aide,

J'ai mis un peu de temps pour mettre tout ça en forme mais ça fonctionne !

Il me reste un dernier détail à régler :

J'ai actuellement +/- 300 agents dans mon tableau mais pou pouvoir faire évoluer ma liste j'ai défini mon tableau sur 400 lignes

Du coup le code

For Each v In Valeur_visibles

parcourt une centaine de lignes vides, comment faire pour s'arrêter dès qu'une valeur est égale à "" ?

J'ai essayé avec activecell.value mais ça ne fonctionne pas

Voilà où j'en suis ...

Dim Valeur_visibles As Range, v As Range
Dim MSForm As Object
Dim presse_papier As String

With ActiveSheet.ListObjects("Tableau1")
        Set Valeur_visibles = .ListColumns(10).DataBodyRange.SpecialCells(xlCellTypeVisible)
            For Each v In Valeur_visibles

                    presse_papier = presse_papier & v & ";"

            Next
End With

'alimentation du presse-papier
    Set MSForm = New DataObject
    MSForm.SetText (presse_papier)
    MSForm.PutInClipboard
    Set MSForm = Nothing

MsgBox "Les mails PRO sont maintenant copiés dans le presse-papier" & vbCrLf & vbCrLf _
& "Il reste à les coller dans la zone 'A' du mail", vbInformation, "Information"

Merci encore de votre temps ...

J'ai actuellement +/- 300 agents dans mon tableau mais pou pouvoir faire évoluer ma liste j'ai défini mon tableau sur 400 lignes

il ne faut pas mettre plus de ligne qu'il y a de données,

le tableau s'agrandira tout seul en y ajoutant des données.

Okaaay ! et bien tous mes problèmes sont résolus

Un super grand merci

Rechercher des sujets similaires à "copie vba donnees triees"