Boucler une commande "copier" par la couleur de la cellule
Bonjour a tous,
je me permets de vous demander de l'aide car là, je sais même pas par ou commencer :S
je récupère tt les semaines une extraction d'un logiciel du travail (non modifiable)qui est un peu mal fait, en tt cas qui me facilite pas la tache
comme vous verrez ci dessous et avec la PJ (onglet départ), les lignes entête de sous groupes sont en bleu (des fois vide des fois plusieurs lignes) et dessous les lignes de données constituantes.
J'aimerai pouvoir insérer une colonne (ca, ca va :d) et coller en face de chaque ligne de donnée sont titre de ligne d'entête. (cf. pj. onglet résultat)
je vois pas comment boucler sur la couleur et coller tant que c'est "blanc" ou jusqu'au prochain bleu, tu colle la valeur A puis au prochain "bleu" de change de variable et tu repart a coller...
Je sais pas si j'ai été clair...mais la PJ devrait aider
Merci de votre aide
rebjr, avec le code c'est mieux, desolé...
ca insert bien le titre sur les lignes bleues mais ca fait pas le collage sur les données constituantes...lignes blanches
Sub test()
'insertion colonne
Columns("A:A").Select
'Application.CutCopyMode = False
'Selection.Copy
Selection.Insert Shift:=xlToRight
Range("b3").Select
Dim derniere_ligne As Long
Dim valeur As String
derniere_ligne = Range("b65000").End(xlUp).Row
For i = 3 To derniere_ligne
If Range("b" & i).Interior.Color = RGB(17, 185, 214) Then ' test si bleu(r17;v185;b214)
valeur = Range("b" & i).Value '(je fais ca pour pouvoir m'en resservir plus bas mais ca marche pas trop)
Range("b" & i).Offset(0, -1).Value = valeur
''la methode est peu ete pas bonne, je refait un test ligne+1 ici pour voir si c'est blanc en dessous...pour copier une 1er fois le tite
' ca me semble mieux pour le test si intrieur blanc au prochain tour de boucle
If Range("b" & i).Offset(1, 0).Interior.Color = RGB(0, 0, 0) Then
Range("b" & i).Offset(1, -1).Value = valeur
Else
End If
Else
'teste si blanc
If Range("b" & i).Interior.Color = RGB(0, 0, 0) Then ' "cellule blanche"
Range("b" & i).Offset(0, -1).Value = Range("b" & i).Offset(-1, -1).Value '(la ligne du dessus sensé etre bleu)
Else
End If
End If
Next i
End Sub
bon bah l'erreure etait dans la declaration de couleur (j'suis bete)
Sub test()
'insertion ligne
Columns("A:A").Select
'Application.CutCopyMode = False
'Selection.Copy
Selection.Insert Shift:=xlToRight
Range("b3").Select
Dim derniere_ligne As Long
Dim valeur As String
derniere_ligne = Range("b65000").End(xlUp).Row
For i = 3 To derniere_ligne
If Range("b" & i).Interior.Color = RGB(17, 185, 214) Then ' test si bleu(r17;v185;b214)
valeur = Range("b" & i).Value
Range("b" & i).Offset(0, -1).Value = valeur
Else
'teste si blanc
If Range("b" & i).Interior.ColorIndex = xlColorIndexNone Then ' "cellule vide - blanche"
If Range("b" & i).Offset(-1, 0).Interior.Color = RGB(17, 185, 214) Then
valeur = Range("b" & i).Offset(-1, -1).Value '(la ligne du dessus sensé etre bleu)
Range("b" & i).Offset(0, -1).Value = valeur
Else
Range("b" & i).Offset(0, -1).Value = Range("b" & i).Offset(-1, -1).Value
End If
Else
End If
End If
Next i
End Sub
voici le code si ca peu servir a d'autre.
CDT