Sauver une pauvre nulle en VBA pour mise en forme conditionnelle

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 :confused:

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>
 

Pièces jointes

  • macrotest.xls
    57 KB · Affichages: 43
  • macrotest.xls
    57 KB · Affichages: 47
  • macrotest.xls
    57 KB · Affichages: 48

Modeste

XLDnaute Barbatruc
Re : Sauver une pauvre nulle en VBA pour mise en forme conditionnelle

Bonjour mauricette007 et bienvenue,

Voyons d'abord si tu repasses par ici ... dans l'affirmative, on investira un peu plus d'énergie :D
Je ne sais où tu as trouvé ce code, mais je présume qu'il devait être accompagné d'une explication ou l'autre!?
De ce que j'en ai compris:
- en feuille MFC, tu dois laisser A1 vide et placer la liste des critères (texte et mise en forme associée) au départ de A2 (insère donc une ligne vide au-dessus de tes données en feuille MFC).
- dans les autres feuilles, sélectionne la plage de cellules où tu serais susceptible d'encoder tes "niveaux de risque" (de la même manière que tu l'as fait en Feuil2!C2, je l'ai fait dans la plage marquée par des bordures en feuille 2)
- comme il manque une partie des explications de l'auteur, pour que les choses fonctionnent, j'ai modifié l'instruction en ligne 12 du code dans le ThisWorkbook (rebaptisé "MA_MFC") comme suit:
Code:
If Ws1.Range("A" & j) = Ws1.Range("A1") Then

... en faisant 2-3 tests (Excel 2010 et Excel 2000), ça semble fonctionner ... pour autant qu'on ne fasse pas d'erreurs à l'encodage!

Je remets ton fichier en pièce jointe (tu peux joyeusement supprimer les Modules 1 et 2, de même que le UserForm1, sauf s'ils sont destinés à un autre usage!)
Pas certain que je m'y serais pris de la même manière, mais encore une fois, sans le contexte ...
 

Modeste

XLDnaute Barbatruc
Re : Sauver une pauvre nulle en VBA pour mise en forme conditionnelle

Re-bonjour mauricette007,
Salut kjin :)
... et merci à sourcier08 de m'avoir signalé l'oubli de la pièce jointe :eek:

Cette fois, en me concentrant un peu, je devrais arriver à ne pas l'oublier!
 

Pièces jointes

  • macrotest (mauricette007).xls
    34 KB · Affichages: 48

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG