Macro mise en forme cellule

Ah merci beaucoup,

ça à l'air de marcher sur tout le fichier

ramoutch a écrit :

par contre j'ai remarqué un truc c'est qu'une case peut devenir verte même si elle était déjà bleue , c'est normal ?

Oui c'est normal dans le cas ou une date réalisée a lieu la même semaine que celle prévue c'est ce que je voulais

J'ai du mal a comprendre le début de ta macro

nbcol = 10
    nb = Len(Target.Address) - InStr(2, Target.Address, "$")

    While IsEmpty(Cells(8, nbcol).Value) = False
        nbcol = nbcol + 1
    Wend
    nbcol = nbcol - 1

    For i = 10 To nbcol

peut tu m'expliquer le fonctionnement stp , on démarre de la colonne 10 et après ,

Je peux rajouter autant de lignes la macro marchera toujours ?

Encore merci pour ta disponibilité


Un truc que j'ai remarqué c'est qu'on ne peut pas modifier plusieurs date en même temps sinon cela plante la macro

peut on éviter cela ? , je suis un peu pointilleux

Pour le début de la macro

    While IsEmpty(Cells(8, nbcol).Value) = False
        nbcol = nbcol + 1
    Wend
    nbcol = nbcol - 1

cela compte le nombre de colonne dans lesquelles la ligne 8 n'est pas vide (à partir de la 10éme) , c 'est pour éviter de modifier la macro en cas d'ajout de colonne (mais la ligne 8 ne doit pas être vide sinon les colonnes situés après ne seront pas prises en compte).

Pour les changements multiple , se n'est pas possible avec cette macro-ci (car elle prend en paramètre le numéro de la ligne modifiée) mais faisable avec la précédente (à tester mais en théorie sa devrait marcher) .

Après c'est à toi de voir si il vaut mieux la lancé plusieurs fois ou une seule avec un traitement plus longs

ramoutch a écrit :

Pour les changements multiple , se n'est pas possible avec cette macro-ci (car elle prend en paramètre le numéro de la ligne modifiée) mais faisable avec la précédente (à tester mais en théorie sa devrait marcher) .

Après c'est à toi de voir si il vaut mieux la lancé plusieurs fois ou une seule avec un traitement plus longs

Oui c'est ce que je pensait , je vais réfléchir a tout ca

merci du coup de main

Dommage mais la 2eme solution n'est pas exploitable dans mon cas , car quand je construit mon tableau je copie souvent sur plusieurs lignes a la fois et dans ce cas la macro plante

que je copie des dates ou autres colonnes , je ne peux pas laisser comme cela

Dommage , je vais tenter de modifier pour permettre un copie-colle de plusieurs ligne mais je ne promet rien

Bon , après quelque recherche et en bidouillant un peu j'ai fait une macro qui marche pour le copier-coller d'une ou plusieurs ligne .

Par contre sa ne marche plus pour si on ne change qu'un cellule .... j'vais essayer de fusionner les deux macros en queqlue chose qui marche

Merci du coup de main moi j'en suis pas capable j'ai trop peu de notion en VBA

Re,

essaye ceci :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim nbcol, i, nb As Integer
Dim rge, cellule As Range

nbcol = 10

While IsEmpty(Cells(8, nbcol).Value) = False
    nbcol = nbcol + 1
Wend

If InStr(1, Target.Address, ":") = 0 Then
    nb = Len(Target.Address) - InStr(2, Target.Address, "$")
    For i = 10 To nbcol
    If Cells(Right(Target.Address, nb), i).Interior.ColorIndex <> 33 Then
        If Cells(Right(Target.Address, nb), i).Value = "RCp" Or Cells(Right(Target.Address, nb), i).Value = "RDp" Then
            Cells(Right(Target.Address, nb), i).Interior.ColorIndex = 33
        End If
    End If
    If Cells(Right(Target.Address, nb), i).Interior.ColorIndex <> 4 Then
        If Cells(Right(Target.Address, nb), i).Value = "RCr" Or Cells(Right(Target.Address, nb), i).Value = "RDr" Or Cells(Right(Target.Address, nb), i).Value = "RCpr" Or Cells(Right(Target.Address, nb), i).Value = "RDpr" Then
            Cells(Right(Target.Address, nb), i).Interior.ColorIndex = 4
        End If

    End If
    Next i
Else
    Set rge = Selection
    For Each cellule In rge
    If cellule.Column < nbcol Then
    If cellule.Interior.ColorIndex <> 33 Then
        If cellule.Value = "RCp" Or cellule.Value = "RDp" Then
            cellule.Interior.ColorIndex = 33
        End If
    End If
    If cellule.Interior.ColorIndex <> 4 Then
        If cellule.Value = "RCr" Or cellule.Value = "RDr" Or cellule.Value = "RCpr" Or cellule.Value = "RDpr" Then
            cellule.Interior.ColorIndex = 4
        End If
    End If
    End If

    Next cellule
End If

End Sub

pour copie simple cela marche pour une copie multiple j'ai une erreur d’exécution 13

quand je fais débogage il met en jaune

If Cells(Right(Target.Address, nb), i).Interior.ColorIndex <> 33 Then

En fait c'est le même message d'erreur que pour l'ancienne macro

qu'appelle tu copie multiple ?

sinon essaye de mettre la macro en commentaire et effectuer la ligne suivante :

msgbox InStr(1, Target.Address, ":")

(normalement sa affiche 0 si tu fait un changement sur une cellule et autre chose si tu copie-colle une ou plusieurs lignes )

Quand je dit collage multiple ou suppression multiple c'est quand je colle ou supprime plusieurs cellule en même temps

je les sélectionnes et je colle ou supprime

je ne comprends pas trop ce que je dois faire avec

msgbox InStr(1, Target.Address, ":")

comment je met ma macro en commentaire ? avec des "" ?

pour les commentaires , il faut ajouter un ' devant la ligne concerné (le bouton "commenter bloc" ) mais en fait c'est pas la peine

moi je suis sous 2007 et il ne permet pas de copie en sélection multiple , donc je vais pas trop pouvoir t'aider ( et honnêtement je vois pas comment je pourrais faire )

sinon sa à l'air de marcher si la sélection est fait sur une seule ligne ou colonne , donc soit tu fait un copie des lignes entières , soit tu les faits par blocs ....

désolé de pas pouvoir t'aider plus

pas de soucis

merci de t'on aide

Rechercher des sujets similaires à "macro mise forme"