Macro couleurs ne fonctionne pas !
dave38
-
Bidouilleu_R Messages postés 1209 Statut Membre -
Bidouilleu_R Messages postés 1209 Statut Membre -
Bonjour, je voudrais comprendre pourquoi la macro suivante ne fonctionne pas, en fait elle ne fait rien, alors qu'elle devrait colorier les lignes en diverses couleurs pour lesquelle une cellule contient "P", "A", ou "G"...
Merci de votre aide très précieuse !
Sub COULEURS()
Dim cl
Dim Target As Range
Dim plage1 As Range
Set plage1 = Range("J4:Z500")
For Each cl In plage1
If cl.Value = "P" Then
Rows(cl.Row).Interior.ColorIndex = 38
End If
Next cl
Dim plage2 As Range
Set plage2 = Range("K4:Z500")
For Each cl In plage2
If cl.Value = "A" Then
Rows(cl.Row).Interior.ColorIndex = 6
End If
Next cl
Dim plage3 As Range
Set plage3 = Range("L4:Z500")
For Each cl In plage3
If cl.Value = "G" Then
Rows(cl.Row).Interior.ColorIndex = 37
End If
Next cl
End Sub
Merci de votre aide très précieuse !
Sub COULEURS()
Dim cl
Dim Target As Range
Dim plage1 As Range
Set plage1 = Range("J4:Z500")
For Each cl In plage1
If cl.Value = "P" Then
Rows(cl.Row).Interior.ColorIndex = 38
End If
Next cl
Dim plage2 As Range
Set plage2 = Range("K4:Z500")
For Each cl In plage2
If cl.Value = "A" Then
Rows(cl.Row).Interior.ColorIndex = 6
End If
Next cl
Dim plage3 As Range
Set plage3 = Range("L4:Z500")
For Each cl In plage3
If cl.Value = "G" Then
Rows(cl.Row).Interior.ColorIndex = 37
End If
Next cl
End Sub
A voir également:
- Excel no_couleur ne fonctionne pas
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- La boite à couleurs - Télécharger - Divers Photo & Graphisme
- Nb si couleur ne fonctionne pas ✓ - Forum Excel
7 réponses
salut
tu n'as pas de message d'erreur ?
je ne suis pas spécialiste mais ça ne devrait pas c au lieu de cl
par exemple dans : For Each cl In plage1
tu n'as pas de message d'erreur ?
je ne suis pas spécialiste mais ça ne devrait pas c au lieu de cl
par exemple dans : For Each cl In plage1
bonjour,
je viens de tester ta macro : elle fonctionne.
quand tu contrôles un "P" dans une cellule tu met la ligne en couleur
If cl.Value = "P" Then
Rows(cl.Row).Interior.ColorIndex = 38
Que voulais tu faire exactement? mettre un fond à la cellule ou bien à toute la ligne?
pour la cellule seule utilise
cl.Interior.colorindex=38
par contre cela n'est pas logique .
car si une valeur est lue "P" en colone J4 ( la ligne prend une couleur "38") et une autre "A" el K4 alors la précedente couleur sera effacée. d'où ma question ci-dessus et ma suggestion.
Set plage1 = Range("J4:Z500") sinon écrit : Set plage1 = Range("J4:J500")
Set plage2 = Range("K4:Z500") : Set plage2 = Range("K4:K500") ....etc
Set plage3 = Range("L4:Z500")
si mon explication ne correspond pas à l'attente souhaitée .... il faut expliciter la demande.
A+
je viens de tester ta macro : elle fonctionne.
quand tu contrôles un "P" dans une cellule tu met la ligne en couleur
If cl.Value = "P" Then
Rows(cl.Row).Interior.ColorIndex = 38
Que voulais tu faire exactement? mettre un fond à la cellule ou bien à toute la ligne?
pour la cellule seule utilise
cl.Interior.colorindex=38
par contre cela n'est pas logique .
car si une valeur est lue "P" en colone J4 ( la ligne prend une couleur "38") et une autre "A" el K4 alors la précedente couleur sera effacée. d'où ma question ci-dessus et ma suggestion.
Set plage1 = Range("J4:Z500") sinon écrit : Set plage1 = Range("J4:J500")
Set plage2 = Range("K4:Z500") : Set plage2 = Range("K4:K500") ....etc
Set plage3 = Range("L4:Z500")
si mon explication ne correspond pas à l'attente souhaitée .... il faut expliciter la demande.
A+
Re,
Merci pour ces précisions
Oui, en effet elle fonctionne, mais que dans 2 fichiers sur 3...et là c'est pour le fichier qui ne fonctionne pas que j'interroge les spécialistes !!
Où dois je la mettre (dans quel module, quel emplacement...) pour que dès que l'utilisateur met un "G" ou un "P" ou un "A", qu'il enregistre et qu'il ferme le fichier, l'utilisateur suivant voit la ligne entière coloriée ?
Peut être est parce que le fichier s'ouvre sur un autre onglet et que par csqt la macro ne s'applique pas sur le bon onglet?
Faut il un "open_auto" ou qqch comme cela ?
MERCI 1000 fois !
Merci pour ces précisions
Oui, en effet elle fonctionne, mais que dans 2 fichiers sur 3...et là c'est pour le fichier qui ne fonctionne pas que j'interroge les spécialistes !!
Où dois je la mettre (dans quel module, quel emplacement...) pour que dès que l'utilisateur met un "G" ou un "P" ou un "A", qu'il enregistre et qu'il ferme le fichier, l'utilisateur suivant voit la ligne entière coloriée ?
Peut être est parce que le fichier s'ouvre sur un autre onglet et que par csqt la macro ne s'applique pas sur le bon onglet?
Faut il un "open_auto" ou qqch comme cela ?
MERCI 1000 fois !
Ha! ce n'est pas la même question.... : )
Oui, en effet elle fonctionne, mais que dans 2 fichiers sur 3...et là c'est pour le fichier qui ne fonctionne pas que j'interroge les spécialistes !!
ça c'est de la pommade !
1 ) ton module couleur doit se trouver :
a) dans chaque fichiers 1 , 2, 3...
b) dans un fichier unique qui dialoguera avec ces trois fichiers ou plus.
2) le plus simple
copier le module dans chaque fichier et ajouter
dans thisworkbook (double click sur thisworkbook)
Private Sub Workbook_Open()
COULEURS
End Sub
et là à l'ouverture le module executera la procedure COULEURS
C'est aussi plus simple à debogguer en cas de pb!
A+
Oui, en effet elle fonctionne, mais que dans 2 fichiers sur 3...et là c'est pour le fichier qui ne fonctionne pas que j'interroge les spécialistes !!
ça c'est de la pommade !
1 ) ton module couleur doit se trouver :
a) dans chaque fichiers 1 , 2, 3...
b) dans un fichier unique qui dialoguera avec ces trois fichiers ou plus.
2) le plus simple
copier le module dans chaque fichier et ajouter
dans thisworkbook (double click sur thisworkbook)
Private Sub Workbook_Open()
COULEURS
End Sub
et là à l'ouverture le module executera la procedure COULEURS
C'est aussi plus simple à debogguer en cas de pb!
A+
Aaaargggggghhhhhh !!
Merci Bidouilleu R.
Excel me retourne un vieux "incompatibilité de type" (erreur 13)...
en me surlignant la ligne suivante :
If cl.Value = "P" Then
qu'est ce qui n'irait pas, suite à ce message très générique ?
merci de votre aide cordiale !
Dave38
Merci Bidouilleu R.
Excel me retourne un vieux "incompatibilité de type" (erreur 13)...
en me surlignant la ligne suivante :
If cl.Value = "P" Then
qu'est ce qui n'irait pas, suite à ce message très générique ?
merci de votre aide cordiale !
Dave38
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tu dis...
Excel me retourne un vieux "incompatibilité de type" (erreur 13)...
en me surlignant la ligne suivante :
If cl.Value = "P" Then
au début de ton code tu écrit Dim cl
ajoute pour me faire plaisir Dim cl as variant ( par défaut il est as variant)
Incompatibilité de type intervient de deux manières :
1) tu essaies de mettre dans une variable un type qui est est trop grand ou qui ne convient pas
ex ( i as integer et plus loin i=1.23)
ici je ne pense pas que ce soit le cas.
2) quand une variable est utilisée dans un module au niveau procédure et aussi en globale.
ton code fonctionne chez moi. j'ai retesté
maintenant si l'erreur est toujours présente
retire dim cl as variant
et écrit
public Cl as variant ' déclaré en globale
sub couleurs()
....
' le même code
...
end Sub
tiens moi au courant.
Bon week end.
Excel me retourne un vieux "incompatibilité de type" (erreur 13)...
en me surlignant la ligne suivante :
If cl.Value = "P" Then
au début de ton code tu écrit Dim cl
ajoute pour me faire plaisir Dim cl as variant ( par défaut il est as variant)
Incompatibilité de type intervient de deux manières :
1) tu essaies de mettre dans une variable un type qui est est trop grand ou qui ne convient pas
ex ( i as integer et plus loin i=1.23)
ici je ne pense pas que ce soit le cas.
2) quand une variable est utilisée dans un module au niveau procédure et aussi en globale.
ton code fonctionne chez moi. j'ai retesté
maintenant si l'erreur est toujours présente
retire dim cl as variant
et écrit
public Cl as variant ' déclaré en globale
sub couleurs()
....
' le même code
...
end Sub
tiens moi au courant.
Bon week end.
Bonjour Bidouilleu R,
ça ne fonctionne pas, que ce soit avec le dim cl as variant ou le "public cl as variant" déclaré en global...
as tu une ultime solution STP ? encore merci ...!
Sub COULEURS()
Dim plage As Range
Dim cl As Variant
Dim Target As Range
Set plage = Range("J4:Z500")
For Each cl In plage
If cl.Value = "P" Then
Rows(cl.Row).Interior.ColorIndex = 38
End If
Next cl
Dim plage2 As Range
Set plage2 = Range("K4:Z500")
For Each cl In plage2
If cl.Value = "A" Then
Rows(cl.Row).Interior.ColorIndex = 6
End If
Next cl
Dim plage3 As Range
Set plage3 = Range("L4:Z500")
For Each cl In plage3
If cl.Value = "G" Then
Rows(cl.Row).Interior.ColorIndex = 37
End If
Next cl
Dim plage4 As Range
Set plage4 = Range("I4:Z500")
For Each cl In plage4
If cl.Value = "Att" Then
Rows(cl.Row).Interior.ColorIndex = xlNone
End If
Next cl
End Sub
ça ne fonctionne pas, que ce soit avec le dim cl as variant ou le "public cl as variant" déclaré en global...
as tu une ultime solution STP ? encore merci ...!
Sub COULEURS()
Dim plage As Range
Dim cl As Variant
Dim Target As Range
Set plage = Range("J4:Z500")
For Each cl In plage
If cl.Value = "P" Then
Rows(cl.Row).Interior.ColorIndex = 38
End If
Next cl
Dim plage2 As Range
Set plage2 = Range("K4:Z500")
For Each cl In plage2
If cl.Value = "A" Then
Rows(cl.Row).Interior.ColorIndex = 6
End If
Next cl
Dim plage3 As Range
Set plage3 = Range("L4:Z500")
For Each cl In plage3
If cl.Value = "G" Then
Rows(cl.Row).Interior.ColorIndex = 37
End If
Next cl
Dim plage4 As Range
Set plage4 = Range("I4:Z500")
For Each cl In plage4
If cl.Value = "Att" Then
Rows(cl.Row).Interior.ColorIndex = xlNone
End If
Next cl
End Sub
Bonjour,
Je répète le code VBA que tu possède n'a pas d'erreur.
je te propose de vérifier 2 choses.
1er test.
1) tu crées un nouveau classeur
2) tu insères un module ( alt f11...)
3) tu recopies le code vba que tu possèdes
4) tu places les valeurs P, G, A dans les cellules correspondantes pour un test
5) enregistre et teste ( fais le test avec seulement ce nouveau classeur ouvert)
2eme test
tu fais alt F11 (microsof visual basic editor)
click sur outils / références et regarde s'il n'y a pas une référence invalide.
s'il y une référence invalide tu trouveras le mot manquant au début de la ligne.
Précise aussi ta version d'excel . je suppose que tu utilises excel 2003.
A+
Je répète le code VBA que tu possède n'a pas d'erreur.
je te propose de vérifier 2 choses.
1er test.
1) tu crées un nouveau classeur
2) tu insères un module ( alt f11...)
3) tu recopies le code vba que tu possèdes
4) tu places les valeurs P, G, A dans les cellules correspondantes pour un test
5) enregistre et teste ( fais le test avec seulement ce nouveau classeur ouvert)
2eme test
tu fais alt F11 (microsof visual basic editor)
click sur outils / références et regarde s'il n'y a pas une référence invalide.
s'il y une référence invalide tu trouveras le mot manquant au début de la ligne.
Précise aussi ta version d'excel . je suppose que tu utilises excel 2003.
A+