VBA: sélection données

Mimix

XLDnaute Nouveau
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
 

Pierrot93

XLDnaute Barbatruc
Re : VBA: sélection données

Bonjour Mimix,

comprends pas trop ton code et ne suis pas certain du résultat que tu attends... un petit tout fichier en pièce jointe, représentant uniquement le problème posé, nous permettrait de t'aider plus facilement...

bonne journée
@+
 

JNP

XLDnaute Barbatruc
Re : VBA: sélection données

Bonjour le fil :),
Code:
ActiveCell.CurrentRegion
agrandit la sélection jusqu'à la première ligne vide et la première colonne vide.
N'aurais-tu pas des lignes vides dans ton extraction ?
Bon courage :cool:
 

Mimix

XLDnaute Nouveau
Re : VBA: sélection données

Bonjour le fil :),
Code:
ActiveCell.CurrentRegion
agrandit la sélection jusqu'à la première ligne vide et la première colonne vide.
N'aurais-tu pas des lignes vides dans ton extraction ?
Bon courage :cool:

Bonjour JNP,

J'ai des cellules vides dans mon extraction mais lorsque je lance cette ligne de code dans une autre procédure, elle sélectionne pourtant bien tout mon tableau
 

Mimix

XLDnaute Nouveau
Re : VBA: sélection données

Re :),Je parle de ligne vide... Si le tableau est entouré par une ligne vide et une colonne vide, la sélection s'arrête là :rolleyes:...
Bon courage :cool:

Bonjour,

Non, il n'y a pas de lignes ou colonnes vides.

J'ai fait plusieurs essais:
- En copiant une partie du tableau sur un autre classeur: ça ne fonctionne pas: la cellule A1 d'un onglet est copiée et collée sur la cellule A2.
- J'ai recopié une ligne "manuellement" sur un classeur et je l'ai dupliquée en changeant quelques cellules: là ça fonctionne...

Je trouve cela vraiment bizarre....
 

JNP

XLDnaute Barbatruc
Re : VBA: sélection données

Re :),
Un bête doute
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
[B][COLOR=red]If Len(Plg) > 0 Then Range(Left(Plg, Len(Plg) - 1)).Copy Works[COLOR=red]heets[/COLOR][/COLOR][COLOR=red]("REGION SUD").[A2][/COLOR][/B]
[COLOR=red][B]Next cll[/B][/COLOR]
End Sub
me paraitrait plus logique ;)...
A + :)
 

Mimix

XLDnaute Nouveau
Re : VBA: sélection données

Re :),
Un bête doute
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
[B][COLOR=red]If Len(Plg) > 0 Then Range(Left(Plg, Len(Plg) - 1)).Copy Works[COLOR=red]heets[/COLOR][/COLOR][COLOR=red]("REGION SUD").[A2][/COLOR][/B]
[COLOR=red][B]Next cll[/B][/COLOR]
End Sub
me paraitrait plus logique ;)...
A + :)

Cela ne revient pas à la même chose?
J'ai néanmoins fait le changement mais le problème persiste, cela reste toujours un mystère!
Merci en tout cas JNP d'avoir essayé de m'aider
 

JNP

XLDnaute Barbatruc
Re : VBA: sélection données

Re :),
Cela ne revient pas à la même chose?
Si, j'avais pas vu la virgule, et je me méfie des Select :p...
J'avais bien dit un "bête" doute :D...
Est-ce que Marseille et Bordeaux sont bien en majuscule dans les cellules ?
Est-ce qu'il n'y aurait pas des blancs après dans la cellule ?
Teste
Code:
     If cll.Value Like "*MARSEILLE*" Or cll.Value Like "*BORDEAUX*" Then Plg = Plg & cll.Row() & ":" & cll.Row() & ","
      If cll.Value Like "*MARSEILLE*" Or cll.Value Like "*BORDEAUX*" Then cll.Interior.Color
A+ :cool:
 

Mimix

XLDnaute Nouveau
Re : VBA: sélection données

Re :),Si, j'avais pas vu la virgule, et je me méfie des Select :p...
J'avais bien dit un "bête" doute :D...
Est-ce que Marseille et Bordeaux sont bien en majuscule dans les cellules ?
Est-ce qu'il n'y aurait pas des blancs après dans la cellule ?
Teste
Code:
     If cll.Value Like "*MARSEILLE*" Or cll.Value Like "*BORDEAUX*" Then Plg = Plg & cll.Row() & ":" & cll.Row() & ","
      If cll.Value Like "*MARSEILLE*" Or cll.Value Like "*BORDEAUX*" Then cll.Interior.Color
A+ :cool:

Bonjour,

Effectivement, il y avait des espaces et la sélection se fait bien mais pas la copie.
Maintenant , j 'ai un autre problème: lorsque j'exécute la macro, j'ai une erreur: "La méthode Range de l'objet global a échoué" sur cette ligne:
Code:
If Len(Plg) > 0 Then [COLOR="Red"]Range(Left(Plg, Len(Plg) - 1)).Select[/COLOR]
Selection.Copy Worksheets("REGION SUD").[A2]

J'ai tout mis sur la même ligne mais là, il me met "l'élément portant sur ce nom est introuvable":
Code:
[COLOR="Red"]If Len(Plg) > 0 Then Range(Left(Plg, Len(Plg) - 1)).Copy Worksheets("PARITEL").[A2][/COLOR]
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : VBA: sélection données

Re :),
Peut-être
Code:
[COLOR=red]Worksheets("Données Janvier 2009").[/COLOR][COLOR=black]Range(Left(Plg, Len(Plg) - 1)).Copy Worksheets("PARITEL[/COLOR][COLOR=#ff0000][COLOR=black]")[/COLOR].Range("A2")[/COLOR]
mais comme disais Pierrot en #2, un petit bout de fichier serait bien plus simple pour comprendre le problème...
Bon courage :cool:
 

Mimix

XLDnaute Nouveau
Re : VBA: sélection données

Re :),
Peut-être
Code:
[COLOR=red]Worksheets("Données Janvier 2009").[/COLOR][COLOR=black]Range(Left(Plg, Len(Plg) - 1)).Copy Worksheets("PARITEL[/COLOR][COLOR=#ff0000][COLOR=black]")[/COLOR].Range("A2")[/COLOR]
mais comme disais Pierrot en #2, un petit bout de fichier serait bien plus simple pour comprendre le problème...
Bon courage :cool:

Bonjour JNP,

Merci beaucoup de m'aider!

En fait, sur un autre fichier test (que j'ai mis en pièce jointe), ça marche parfaitement mais lorsque je veux l'adapter à mon cas, ça bloque. Je ne peux pas le mettre en ligne car ce sont des données confidentielles :(...
Là, j'ai rajouté le worksheets en début de ligne et j'ai "erreur définie par l'application ou par l'objet l'objet
 

Pièces jointes

  • TEST.xls
    42.5 KB · Affichages: 87
  • TEST.xls
    42.5 KB · Affichages: 94
  • TEST.xls
    42.5 KB · Affichages: 85

JNP

XLDnaute Barbatruc
Re : VBA: sélection données

Re :),
Certes, mais trouver l'erreur dans un fichier qui marche :p...
Je ne sais pas quoi te dire :eek:...
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 :cool:
 

Discussions similaires

Réponses
6
Affichages
286
Réponses
3
Affichages
607

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 989
dernier inscrit
jralonso