vba:copier les cellules d'une couleur vers un autre onglet

bigs32

XLDnaute Junior
bonjour
a partir de l'onglet feuil1 j'aimerais copier ligne par ligne les cellules en couleur jaune vers l'onglet feuil2
voici le fichier joint
j'aimerais trouver plusieurs méthodes pour faire celà en VBA .Je me suis pencheé depuis 3h sur ce problème mais rien à faire j'ai pas trouvé.
si vous avez une idée
merci d'avance
 

Pièces jointes

  • copie_couleur.xls
    17 KB · Affichages: 224

JNP

XLDnaute Barbatruc
Re : vba:copier les cellules d'une couleur vers un autre onglet

Bonjour Bigs32 :),
Un petit éclaircissement :
Tu souhaites récupérer la ligne entière dès qu'une cellule est en jaune dans cette ligne
ou
Tu souhaites récupérer uniquement les cellules jaunes, dans l'ordre des colonnes d'abord, puis en descendant les lignes
Ce ne sera évidemment pas le même développement :rolleyes:...
Question subsidiaire : pourquoi plusieurs méthodes :p ?
A te lire :cool:
 

bigs32

XLDnaute Junior
Re : vba:copier les cellules d'une couleur vers un autre onglet

Bonjour Bigs32 :),
Un petit éclaircissement :
Tu souhaites récupérer la ligne entière dès qu'une cellule est en jaune dans cette ligne
ou
Tu souhaites récupérer uniquement les cellules jaunes, dans l'ordre des colonnes d'abord, puis en descendant les lignes
Ce ne sera évidemment pas le même développement :rolleyes:...
Question subsidiaire : pourquoi plusieurs méthodes :p ?
A te lire :cool:
je souhaites récupérer uniquement les cellules jaunes, dans l'ordre des colonnes d'abord, puis en descendant les lignes.
plusieurs méthodes car j'aimerais apprendre à coder en vba
 

JNP

XLDnaute Barbatruc
Re : vba:copier les cellules d'une couleur vers un autre onglet

Re :),
plusieurs méthodes car j'aimerais apprendre à coder en vba
Ok, alors autant sortir le grand jeu :p...
Code:
Sub test()
Dim Cellule1 As Range, Cellule2 As Range
Dim I As Integer, J As Integer
Dim flag As Boolean
I = 1: J = 1
With Sheets("Feuil1")
For Each Cellule1 In Intersect(.Range("A:A"), .UsedRange)
For Each Cellule2 In Intersect(.Rows(Cellule1.Row), .UsedRange)
If Cellule2.Interior.Color = 65535 Then
Sheets("Feuil2").Cells(I, J) = Cellule2
J = J + 1
flag = True
End If
Next Cellule2
J = 1
If flag = True Then I = I + 1: flag = False
Next Cellule1
End With
End Sub
Bon WE :cool:
 

bigs32

XLDnaute Junior
Re : vba:copier les cellules d'une couleur vers un autre onglet

trop fort JNP .le resultat sur feuil2 est bon.
comment t'es rapide .chapeau.laisse moi analyser ton code pour comprendre et si j'ai des questions .
pour nene j'aime bien ton code .plus simple à comprendre mais dommage que le resultat n'est pas bon sur feuil2
 

néné06

XLDnaute Accro
Re : vba:copier les cellules d'une couleur vers un autre onglet

Exact: je n'avais pas réalisé que tu voulais uniquement deux colonnes .
Si deux cellules jaunes dans la même ligne,alors copier en colonne1 la première puis en colonne2 la deuxième ,qu'importe la place en colonne feuil1 de la première cellule jaune.


A+
 

JNP

XLDnaute Barbatruc
Re : vba:copier les cellules d'une couleur vers un autre onglet

Re :),
JPN ,je maitrise pas bien ces lignes
il y a une autre facon d'ecrire çà .merci
Certainement, mais beaucoup plus compliquée :p...
Tu as (entre autres) 2 méthodes pour balayer tes lignes
Néné a défini les bornes première ligne, dernière ligne, première colonnne, dernière colonne, puis il décrit avec des boucles les cellules de celles-ci en coordonnées (Cells(i, j)) ;).
La mienne consiste à balayer les cellules comprises dans une plage donnée, ce qui y ressemble fortement :rolleyes:.
Techniquement (d'après les tests effectués sur ce forum), la méthode de Néné est plus rapide :eek:...
Mais bon, si tu n'as pas 30000 lignes à traiter, ça ne se sentira pas :p...
Le problème n'est pas d'écrire différemment, mais de comprendre ;) !
Je n'avais jamais pensé à cette méthode, mais il est fort possible qu'elle fasse des petits :rolleyes:...
Intersect(.Range("A:A"), .UsedRange) calcule l'intersection de la colonne A et des cellules utilisées, pour définir toutes les lignes à tester.
Intersect(.Rows(Cellule1.Row), .UsedRange) calcule les cellules utilisées dans la ligne correspondante.
Bonne suite :cool:
 

bigs32

XLDnaute Junior
Re : vba:copier les cellules d'une couleur vers un autre onglet

merci à tous les deux.les 2 methodes sont vraiment supers.
c'est pas mal cette astuces de trouver la derniere ligne et derniere colonne d'un onglet avec ce code
Find("*", , , , , xlPrevious)
.
je pensais à une autre methode ou il faut stocker les données en jaune dans un tableau et les coller apres .histoire d'utiliser les tableaux en VBA que j'ai un peu de mal à comprendre.
 

JNP

XLDnaute Barbatruc
Re : vba:copier les cellules d'une couleur vers un autre onglet

Re :),
je pensais à une autre methode ou il faut stocker les données en jaune dans un tableau et les coller apres .histoire d'utiliser les tableaux en VBA que j'ai un peu de mal à comprendre.
Pourquoi pas, mais à condition d'accepter que les solutions soient en lignes dans une seule colonne :rolleyes:...
A + :cool:
 

JNP

XLDnaute Barbatruc
Re : vba:copier les cellules d'une couleur vers un autre onglet

Re :),
une solution en tableau pour faire plaisir au monsieur :p
Code:
Sub Test()
Dim Cellule As Range, Tableau(), I As Integer
For Each Cellule In Sheets("Feuil1").UsedRange
If Cellule.Interior.Color = 65535 Then
ReDim Preserve Tableau(I)
Tableau(I) = Cellule
I = I + 1
End If
Next Cellule
Sheets("Feuil2").Range("A1").Resize(UBound(Tableau) + 1).Value = WorksheetFunction.Transpose(Tableau)
End Sub
Bonne nuit :cool:
 

bigs32

XLDnaute Junior
Re : vba:copier les cellules d'une couleur vers un autre onglet

Re :),
une solution en tableau pour faire plaisir au monsieur :p
Code:
Sub Test()
Dim Cellule As Range, Tableau(), I As Integer
For Each Cellule In Sheets("Feuil1").UsedRange
If Cellule.Interior.Color = 65535 Then
ReDim Preserve Tableau(I)
Tableau(I) = Cellule
I = I + 1
End If
Next Cellule
Sheets("Feuil2").Range("A1").Resize(UBound(Tableau) + 1).Value = WorksheetFunction.Transpose(Tableau)
End Sub
Bonne nuit :cool:
intéressant mais
y a pas une petite erreur dans ce code ? car le resultat
est sur une colonne
yy2
yy4
aa3
aa4
bb2
bb3
cc2
cc4
 

JNP

XLDnaute Barbatruc
Re : vba:copier les cellules d'une couleur vers un autre onglet

Re :),
intéressant mais
y a pas une petite erreur dans ce code ? car le resultat
est sur une colonne

Aprendre le VBA, c'est bien, apprendre à lire, c'est mieux :rolleyes:...
Re :),Pourquoi pas, mais à condition d'accepter que les solutions soient en lignes dans une seule colonne :rolleyes:...
Bonne nuit :cool:
 

Discussions similaires

Réponses
4
Affichages
337

Statistiques des forums

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