mauricette007
XLDnaute Nouveau
Bonjour,
Donc je me présente: jeune madame nulle en VBA actuellement sous la neige. Je pense que ça pose bien le portrait. Et si je viens ici c'est que j'ai un problèmeeeeee
J'ai bien lu les différents post sur la mise en forme conditionnelle et le fait d'ajouter une macro pour Excel 2003 et diversifié ainsi le nombre de condition (au-delà de 3).
Oui je suis toujours sous excel 2003.
Toutefois ce que je ne sais pas c'est la procédure complète pour faire marcher la bête.
Je m'explique pour le moment voilà où j'en suis :
1) j'ai un classeur avec trois onglets que j'ai nommé "macrotest"
2) le premier onglet se nomme "MFC" (le second Feuil2 et le troisième Feuil3)
Dans cette onglet (MFC) j'ai en colonne A une liste de différentes valeur texte les unes en dessous des autres auquelles j'ai appliquées une couleur de fond différente:
ex: A1=Risque important en rouge
A2=Risque modéré en jaune
A3=Risque inexistant en vert
...J'ai comme cela 23 critères (avec parfois le même fond de couleur qui revient en fonction des cas. Par exemple la cellule A10 va aussi être en vert car la cellule contient le mot "Bon". Bref jusque là c'est simple. (au total j'ai 6 couleurs différentes pour 23 entrées différentes au format texte)
cf fichier joint
3) Je suis allée dans Outil>>Macro>>Visual Basic Editor
J'ai double cliqué sur ThisWorbook
Ensuite j'ai sélectionné Worbook et sheetchange dans les menus déroulants du haut.
4) J'ai copier le code de macro que j'ai trouvé sur internet à savoir cela :
"Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim i As Integer, j As Long, Mfc As FormatCondition, c As Range, Ws1 As Worksheet
On Error GoTo fin ' en cas de mauvaise manipulation, ça plante sur l'ordre suivant
Application.EnableEvents = False
Set Ws1 = Sheets("MFC")
For i = 1 To Target.FormatConditions.Count
Set Mfc = Target.FormatConditions(i)
If UCase(Left(Mfc.Formula1, 7)) = "=MA_MFC" Then
Ws1.Range("A1").Value = Target.Value
Set c = Nothing
For j = 2 To Ws1.Range("A65536").End(xlUp).Row
If Ws1.Range("A" & j) = True Then
Set c = Ws1.Range("A" & j)
Exit For
End If
Next j
If c Is Nothing Then Set c = Ws1.Range("A1")
c.Copy
Target.PasteSpecial (xlPasteFormats)
Application.CutCopyMode = False
End If
Next i
Application.EnableEvents = True
fin:
On Error GoTo 0
End Sub"
4) Voilà là je ne sais pas ce que je dois faire ensuite (quel bouton appuyer, que faire??)
5) Et pour qu'après cette macro marche bah je ne sais pas non plus quoi faire.
Pour le moment pour vous illustrer apparemment mon incompétence j'ai enregistré fermé le classeur je l'ai réouvert j'ai autorisé les macros et dans le feuillet feuil2 j'ai marqué dans une cellule au pif Risque important. Je suis ensuite allée dans mise enf orme conditionnelle et j'ai fait cela:
la formule est = Ma_MFC puis ok
et là tadam: rien ne se passe.
Je vous remercie tous par avance pour vos aides précieuses.
Pour info je n'ai jamais utilisé VBA mais là j'aimerais savoir comment ça marche car j'ai un projet de grand classeur sous excel 2003 avec des mises en forme conditionnelles à réaliser au delà de 3 condition donc pas le choix je suis obligée de passer par là.
Une fois que j'aurai compris sur cette exemple simple je pense être en mesure de le réitérer dans n'importe quel classeur.
Ayez pitié d'une pauvre ignorante...
<config>Windows XP / Internet Explorer 8.0</config>
Donc je me présente: jeune madame nulle en VBA actuellement sous la neige. Je pense que ça pose bien le portrait. Et si je viens ici c'est que j'ai un problèmeeeeee
J'ai bien lu les différents post sur la mise en forme conditionnelle et le fait d'ajouter une macro pour Excel 2003 et diversifié ainsi le nombre de condition (au-delà de 3).
Oui je suis toujours sous excel 2003.
Toutefois ce que je ne sais pas c'est la procédure complète pour faire marcher la bête.
Je m'explique pour le moment voilà où j'en suis :
1) j'ai un classeur avec trois onglets que j'ai nommé "macrotest"
2) le premier onglet se nomme "MFC" (le second Feuil2 et le troisième Feuil3)
Dans cette onglet (MFC) j'ai en colonne A une liste de différentes valeur texte les unes en dessous des autres auquelles j'ai appliquées une couleur de fond différente:
ex: A1=Risque important en rouge
A2=Risque modéré en jaune
A3=Risque inexistant en vert
...J'ai comme cela 23 critères (avec parfois le même fond de couleur qui revient en fonction des cas. Par exemple la cellule A10 va aussi être en vert car la cellule contient le mot "Bon". Bref jusque là c'est simple. (au total j'ai 6 couleurs différentes pour 23 entrées différentes au format texte)
cf fichier joint
3) Je suis allée dans Outil>>Macro>>Visual Basic Editor
J'ai double cliqué sur ThisWorbook
Ensuite j'ai sélectionné Worbook et sheetchange dans les menus déroulants du haut.
4) J'ai copier le code de macro que j'ai trouvé sur internet à savoir cela :
"Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim i As Integer, j As Long, Mfc As FormatCondition, c As Range, Ws1 As Worksheet
On Error GoTo fin ' en cas de mauvaise manipulation, ça plante sur l'ordre suivant
Application.EnableEvents = False
Set Ws1 = Sheets("MFC")
For i = 1 To Target.FormatConditions.Count
Set Mfc = Target.FormatConditions(i)
If UCase(Left(Mfc.Formula1, 7)) = "=MA_MFC" Then
Ws1.Range("A1").Value = Target.Value
Set c = Nothing
For j = 2 To Ws1.Range("A65536").End(xlUp).Row
If Ws1.Range("A" & j) = True Then
Set c = Ws1.Range("A" & j)
Exit For
End If
Next j
If c Is Nothing Then Set c = Ws1.Range("A1")
c.Copy
Target.PasteSpecial (xlPasteFormats)
Application.CutCopyMode = False
End If
Next i
Application.EnableEvents = True
fin:
On Error GoTo 0
End Sub"
4) Voilà là je ne sais pas ce que je dois faire ensuite (quel bouton appuyer, que faire??)
5) Et pour qu'après cette macro marche bah je ne sais pas non plus quoi faire.
Pour le moment pour vous illustrer apparemment mon incompétence j'ai enregistré fermé le classeur je l'ai réouvert j'ai autorisé les macros et dans le feuillet feuil2 j'ai marqué dans une cellule au pif Risque important. Je suis ensuite allée dans mise enf orme conditionnelle et j'ai fait cela:
la formule est = Ma_MFC puis ok
et là tadam: rien ne se passe.
Je vous remercie tous par avance pour vos aides précieuses.
Pour info je n'ai jamais utilisé VBA mais là j'aimerais savoir comment ça marche car j'ai un projet de grand classeur sous excel 2003 avec des mises en forme conditionnelles à réaliser au delà de 3 condition donc pas le choix je suis obligée de passer par là.
Une fois que j'aurai compris sur cette exemple simple je pense être en mesure de le réitérer dans n'importe quel classeur.
Ayez pitié d'une pauvre ignorante...
<config>Windows XP / Internet Explorer 8.0</config>