copier coller conditionnel EXCEL 2003

netten

XLDnaute Junior
Bonjour tout le monde, j'ai un tableau que je lis en lignes.

Selon les valeurs dans le tableau, la cellule H est succeptible de se colorer selon trois couleurs différentes, selon la couleur obtenue, un certain nombre de cellule de la ligne correpondante à la cellule colorée sont copier puis coller dans une autre feuille.

Voilà l'objectif. L'ensemble de la colonne H est concernée.



Code:
Sub rouge()

For i = 5 To 65000 'rangées de 5 à 65000
If Range("H" & i).Interior.ColorIndex = 3 Then 'colonne B couleur rouge

Range("D" & i).Select.Copy
Sheets("Semaine 1 et 2").Select
Range("B7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range("E" & i).Select.Copy
Sheets("Semaine 1 et 2").Select
Range("C7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range("G" & i).Select.Copy
Sheets("Semaine 1 et 2").Select
Range("D7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Else

If Range("H" & i).Interior.ColorIndex = 46 Then

Range("D" & i).Select.Copy
Sheets("RETARD").Select
Range("B8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range("E" & i).Select.Copy
Sheets("RETARD").Select
Range("C8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range("G" & i).Select.Copy
Sheets("RETARD").Select
Range("D8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

End If
End If
Next

End Sub

En fait, ce que j'aimerais aussi résoudre, c'est que tout les copier coller se mettent les uns à la suite des autre dans l'ordre des ligne dans la Feuil3, sans que j'ai à attribuer une cellule précise ou coller. Ca m'éviterais beaucoup de lignes à taper.
Voilà donc le hic, cellule colorée, alors copier coller une selection de cellules de la ligne correspondante dans la feuille qui va bien, toutes les données sont collées les unes à la la suite des autres.

Je vous remercie de votre aide des plus appréciées ;)
 

Gorfael

XLDnaute Barbatruc
Re : copier coller conditionnel EXCEL 2003

Salut netten et le forum
J'étais en train de lire en diagonale, quand j'ai remarqué ça :
la cellule H est succeptible de se colorer selon trois couleurs différentes
Ça me suggère une MFC. Or une MFC ne colorie pas l'intérieur/la police d'une cellule : elle colorie simplement un "calque MFC", et personnellement je n'ai pas encore trouvé comment exploiter la valeur Vrai/Faux d'une condition de MFC.
Teste sur une cellule .interior.colorIndex avec une MFC qui la colore en rouge.
A+
 

netten

XLDnaute Junior
Re : copier coller conditionnel EXCEL 2003

bonjour, j'avais déjà essayé la MFC, ça ne fonctionne pas, vba ne reconnait pas la couleur. A la limite, j'avais pensé à associé un chiffre à côté de la cellule colorée, cad rouge celulle J,i donne 1 orange cellule J,i donne 2. Puis essayer d'exploiter plutôt cette grandeur, mais même ça, je n'ai pas encore trouvé la solution.
 

skoobi

XLDnaute Barbatruc
Re : copier coller conditionnel EXCEL 2003

Bonjour Gorfael, netten,

un fichier serait le bienvenu car ceci n'est pas très clair par rapport au code:

En fait, ce que j'aimerais aussi résoudre, c'est que tout les copier coller se mettent les uns à la suite des autre dans l'ordre des ligne dans la Feuil3, sans que j'ai à attribuer une cellule précise ou coller

Dans ton code, tu colles toujours soit en ligne 7 pour la feuille "semaine 1 et 2" ou la ligne 8 pour la feuille "RETARD"...
 

netten

XLDnaute Junior
Re : copier coller conditionnel EXCEL 2003

Bonjout à tous,

Voilà le petit fichier avec quelques explications, n'hésiter pas à me demander des infos. merci encore ;)
 

Pièces jointes

  • test3.xls
    45 KB · Affichages: 74
  • test3.xls
    45 KB · Affichages: 71
  • test3.xls
    45 KB · Affichages: 69

netten

XLDnaute Junior
Re : copier coller conditionnel EXCEL 2003

Bonjour Gorfael, netten,

Dans ton code, tu colles toujours soit en ligne 7 pour la feuille "semaine 1 et 2" ou la ligne 8 pour la feuille "RETARD"...

C'est parce que j'ai pas encore trouvé la solution pour lui faire comprendre qu'il doit coller à partir de la cellule C5 avec comme variable i+1 si

Range("C" & i),""
Range("D" & i),""
Range("E" & i),""


Mais je ne sais pas encore l'écrire :confused:
 

skoobi

XLDnaute Barbatruc
Re : copier coller conditionnel EXCEL 2003

Re,

plutôt que de vouloir reproduire la MFC dans la macro, il suffit de récupérer les conditions qui génère la couleur voulu dans la conne H. Ca donne ceci:

Code:
Sub MAJ()
Dim i As Long, LigSuiv As Long

For i = 5 To Range("H65536").End(xlUp).Row
  Select Case Range("H" & i).Value
  Case Is < 168
    With Sheets("URGENT")
      LigSuiv = .Range("C65536").End(xlUp).Row + 1
      If LigSuiv = 2 Then LigSuiv = 5
      Sheets("Feuil3").Range("D" & i & ",E" & i & ",G" & i).Copy
      .Range("C" & LigSuiv).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    End With
 Case 168 To 264
    With Sheets("RETARD")
      LigSuiv = .Range("C65536").End(xlUp).Row + 1
      If LigSuiv = 2 Then LigSuiv = 5
      Sheets("Feuil3").Range("D" & i & ",E" & i & ",G" & i).Copy
      .Range("C" & LigSuiv).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    End With
  Case 265 To 312
  'A toi de compléter
  
  End Select
Next
End Sub
Si tu veux des explications sur le code, n'hésite pas.

Bon Week-end.
 

Gorfael

XLDnaute Barbatruc
Re : copier coller conditionnel EXCEL 2003

Salut netten et le forum
Pas sûr de comprendre...

Si je veux copier des infos les unes derrière les autres, il faut que je calcule la dernière cellule non vide, ajouter 1 à la ligne trouvé, pour me retrouver à la première cellule vide, derrière la dernière non vide.

Le but d'un fichier d'exemple (pas d'un fichier de travail) est de permettre à des extérieurs de comprendre ce qu'ils doivent faire : ce n'est pas franchement le cas pour ton fichier (enfin, pour moi).

Copier la plage A5 : D8 de feuille "X" sur la plage ç partir de la première ligne vide en F de la feuille "Y" se code dans ce style :
Code:
Sheets("X").Range("A5:D8").Copy Sheets("Y").Cells(rows.count, "F").end(XlUp)(2)
A+
 

netten

XLDnaute Junior
Re : copier coller conditionnel EXCEL 2003

salut tout le monde, en efet, sur ce coup, j'ai pas fait le meilleur fichier excel possible. Cependant, le code de skoobie marche très bien, vraiment merci beaucoup, j'obtiens aisément le résultat souhaité, que dire de plus. Vraiment merci. Pour le code, effectivement je veux bien quelques explications, car tout ne m'est pas clair, comme cette ligne :

LigSuiv = .Range("C65536").End(xlUp).Row + 1
If LigSuiv = 2 Then LigSuiv = 5
Sheets("Feuil3").Range("D" & i & ",E" & i & ",G" & i).Copy
.Range("C" & LigSuiv).

Je comprend pas bien le raisonnement d'autant que je n'ai pas encore eu l'occasion d'utiliser la formule LigSuiv
 

Gorfael

XLDnaute Barbatruc
Re : copier coller conditionnel EXCEL 2003

Salut netten et le forum
LigSuiv = .Range("C65536").End(xlUp).Row + 1
la variable LigSuiv égale la ligne suivante (.Row +1) de la première cellule différente (vide/non vide) de la cellule C65536, en remontant (End(XlUp) de la feuille utilisée en préfixe (with sheets("...")
En plus clair : la ligne suivant la dernière cellule non vide de C.
Comme depuis 2007, on dépasse les 65536 lignes, je préfère Cells(Rows.count, "C").End(xlUp)

If LigSuiv = 2 Then LigSuiv = 5
Si le résultat est 2, (on a rien dans la colonne), on commence à la ligne 5
Pareil, je préfère : If LigSuiv < 5 Then LigSuiv = 5

Sheets("Feuil3").Range("D" & i & ",E" & i & ",G" & i).Copy
Copier dans le presse-papier les cellules des colonnes D, E, G de la ligne i

.Range("C" & LigSuiv).
Manque des infos, parce que l'instruction telle quelle est incomplète
Cellule de la colonne C à la ligne LigSuiv => Je suppose que c'est la destination, mais sans le point derrière, qui rattache à une méthode/propriété. Celui de devant rattache l'instruction au préfixe déterminé avec With.

J'avais pas fait la liaison avec la macro de Skoobi :p. Si c'est ça, donne ta macro en intégralité, on doit pouvoir la simplifier.
A+
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
151

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz