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.
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
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
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
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 +