VBA: sélection données

  • Initiateur de la discussion Initiateur de la discussion Mimix
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

Mimix

Guest
Bonsoir,

Je souhaite sélectionner et copier les lignes d'un tableau en fonction de la valeur d'une cellule spécifiée puis les coller sur une autre feuille.
Après diverses recherches sur Internet, j'ai adapté une procédure qui marche parfaitement sur un tableau test.

Code:
Sub SelectCellulesValeurDeterminee()
Worksheets("Données Janvier 2009").Activate
Range("A1").Select
For Each cll In ActiveCell.CurrentRegion
      If cll.Value = "MARSEILLE" Or cll.Value = "BORDEAUX" Then Plg = Plg & cll.Row() & ":" & cll.Row() & ","
      If cll.Value = "MARSEILLE" Or cll.Value = "BORDEAUX" Then cll.Interior.Color = vbBlue
Next cll
If Len(Plg) > 0 Then Range(Left(Plg, Len(Plg) - 1)).Select
Selection.Copy Worksheets("REGION SUD").[A2]

End Sub

Lorsque j'ai voulu l'appliquer sur mon cas et fait les changements nécessaires, cela ne fonctionne plus de tout: la procédure n'arrive pas à sélectionner les lignes désirées et dans le nouveau tableau, elle se contente de copier la cellule A1 sur A2.
J'ai beau vérifier, cela ne marche pas: s'agit-il d'un problème de données par hasard? En effet, la feuille que j'exploite est une extraction.

Merci par avance pour votre aide
 
Re : VBA: sélection données

Re 🙂,
Certes, mais trouver l'erreur dans un fichier qui marche 😛...
Je ne sais pas quoi te dire 😱...
Tu peux très bien virer les données confidentielles en les remplaçant par des Toto et de 03 03 03 03 03 😉...
Bon courage 😎

Bonjour JNP,

J'ai modifié les données dans mon fichier et là ça ne marche pas 🙁
L'erreur peut-elle provenir du fait que mon extraction contienne plusieurs lignes (1220) alors que sur le fichier qui marche n'en contienne qu'une dizaine?

J'ai fait des recherches et faut-il passer par un filtre élaboré afin de contourner ce problème? Par contre, je ne sais pas trop comment le coder:
- peux-t-on définir plusieurs critères de filtres (plus de 3) ?
- peux-t-on coder sans avoir à écrire une zone de critères?

Mon fichier étant trop gros,je ne suis pas parvenue à le mettre en pièces jointes ni à insérer l'url. Je ne sais pas si je suis autorisée à le faire mais il est à cette adresse: http://dl.free.fr/qp8DRq7jg
 
Dernière modification par un modérateur:
Re : VBA: sélection données

Re 🙂,
Pas de problème, sinon, beaucoup utilisent ci-joint.fr 😉.
En réalité, comme tu mérorises chaque ligne, je pense qu'on dépasse la capacité pour la sélection.
Avec ce code, tu augmenteras la sélection
Code:
Sub SelectCellulesValeurDeterminee()
Dim MaSelection As Range
Application.ScreenUpdating = False
      
    Worksheets(1).Activate
    Range("A1").Select
    
    For Each cll In ActiveCell.CurrentRegion
        If cll.Value Like "*Bordeaux*" Or cll.Value Like "*Paris*" Then
            If MaSelection Is Nothing Then
                Set MaSelection = Rows(cll.Row())
            Else
                Set MaSelection = Union(MaSelection, Rows(cll.Row()))
            End If
            cll.Interior.Color = vbBlue
        End If
    Next cll
    
    
    If Not MaSelection Is Nothing Then MaSelection.Copy Worksheets(2).[A2]
Application.ScreenUpdating = True
End Sub
Dis-moi ce que tu en penses.
A + 😎
 
Re : VBA: sélection données

Bonjour JNP,

Merci beaucoup, ça marche parfaitement.

En revanche, je ne comprends pas très bien le code et notamment ces 2 lignes:
Code:
If MaSelection Is Nothing Then
    Set MaSelection = Rows(cll.Row())

Que signifient les fonctions Is Nothing et Union?

En tout cas merci encore JNP de m'avoir aidée!
 
Re : VBA: sélection données

Re 🙂,
Comme je stocke dans un Range, c'est donc les cellules que je stocke. Donc, Union sert à ajouter la nouvelle ligne à mon Range. Mais Union plante si ma variable est vide, donc je regarde avant si elle est vide, soit Is Nothing 😉.
A noter que pour des Range, Set est obligatoire pour "pousser" dans la variable 🙄.
Bon courage, et content que ça fonctionne enfin 😛.
A + 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
586
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
903
Réponses
6
Affichages
737
Réponses
12
Affichages
1 K
G
Réponses
7
Affichages
1 K
gfgghbhg
G
J
Réponses
2
Affichages
743
jui42
J
Retour