macro liste deroulante couleurs

C

cafrine

Guest
bonsoir à tous

telle une parasite, j'ai récupéré une macro dont je je voulais adapter à mon
planning
et bien sur, ça ne marche pas.....
>> qui pourrait me dire ce qui cloche ?
>> A quoi correspond "range(" A1")" dans la macro

je n'arrive pas à joindre mon fichier en PJ, donc voici la macro : en esperant
que cela suffira..

merci d'avance

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Address = "$H$3" Then Exit Sub
Range("H3").Formula = "=" & ActiveCell.Address
End Sub

Private Sub Worksheet_Calculate()
'Dim Cellule As Range
On Error Resume Next
'For Each Cellule In ActiveSheet.Selection
If Not Application.Intersect(ActiveCell, Range("L4:L34")) Is Nothing Then
ActiveCell.Interior.ColorIndex = xlNone
ActiveCell.Interior.ColorIndex = Range("situation").Cells.Find(What:=ActiveCell, After:=Range("situation").Range("A1"), LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=True).Interior.ColorIndex
ActiveCell.Font.ColorIndex = Range("situation").Cells.Find(What:=ActiveCell, After:=Range("situation").Range("A1"), LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=True).Font.ColorIndex
End If
'Next Cellule
End Sub
 
D

Dan

Guest
Bonjour,

Pour placer ton fichier il y a deux conditions :

1. tu dois disposer d'un programme de compression qui permet d'obtenir des fichiers avec extension ZIP et et y placer ton fichier excel.

2. La grosseur du fichier ZIP ne doit pas dépasser 50 Ko.

Ensuite tu peux placer ton fichier dans la rubrique "Pièce jointe" en utilisant le bouton "parcourir"

Concernant le range A1, je ne suis pas très sûr de son utilité. Cette instruction semble être d'appliquer à la cellule active la couleur trouvée suite à une recherche dans le Range Situation (cellule A1).
Mais bon, avec le fichier et une explication sur ce que tu veux faire, ce serait plus facile de t'aider.

Dans l'attente de te lire

@+ Dan
 
C

cafrine

Guest
bonjour

voici donc mon fichier et son exemple
je pense que vous y verrez plus clair
bien à vous
cafrine
 

Pièces jointes

  • planning.zip
    13.8 KB · Affichages: 26
  • planning.zip
    13.8 KB · Affichages: 26
  • planning.zip
    13.8 KB · Affichages: 24
D

Dan

Guest
Bonjour,

Revoici le fichier avec quelques modifications par rapport à ta demande.

1. Déplacement des données de références dans la feuille situation. J'ai créé un nom "DataSituation" via menu/insertion/nom/définir

2. La feuille Jan_fev_... est renommée "Mois"

3. Via ALT + F11, tu accèdes à VBA. Là appuie sur CTRL + F2 pour avoir la fenetre VBA project. En cliquant dans "This Workbook" tu peux voir la macro que j'ai placée avec quelques explications.

4. Dans la feuille Mois, choisis tes données entre E4 et E34 et ce, via la liste déroulante.

Si pb ou que cela ne te convient pas, n'hésite pas.

Bonne lecture.

@+ Dan
 

Pièces jointes

  • Planning-126442-V3.zip
    14 KB · Affichages: 24
C

cafrine

Guest
bonsoir Dan

je vais de ce pas l'adapter a mes feuilles. j'ai compris le principe.
"" en gros "".
Merci beaucoup à toi

Euh , si je peux me permettre une confirmation :
ce planning est composé de plusieurs feuilles...
pour la même macro , j'ai juste à inserer le nom des autres feuilles et rajouter les plages au bon endroit ??

("mois;mois1;mois2")
("E4:E34;B3:B35;G4:G32")

désolée de te mettre encore à contribution

Merci
 
D

Dan

Guest
Bonsoir Cafrine,

Si tu as plusieurs feuilles, il faut en connaitre les noms et les plages et les introduire séparément dans la macro.

Exemple : Je suppose que la plage E4:E34 concerne uniquement la feuille Mois, la plage B3:B35 concerne la feuille Mois1 et la plage G4:G32 la feuille Mois2.

Dans ce cas il faut adapter comme ci dessous :

remplacer ceci :

If Sh.Name = ("Mois") Then 'Mois1" est le nom de la feuille
Set Plage = Range("E4:E34") 'Plage dans la feuille Mois du classeur
Else: Exit Sub

Par :

If Sh.Name = ("Mois") Then
Set Plage = Range("E4:E34") 'Plage dans la feuille Mois1 du classeur
ElseIf Sh.Name = ("Mois1") Then
Set Plage = Range("B3:B35")
ElseIf Sh.Name = ("Mois2") Then
Set Plage = Range("G4:G32")
Else: Exit Sub

Si pb n'hésite pas

Dan
 
C

cafrine

Guest
bonsoir dan

J' ai essayé d'adapter le dernier fichier....en vain.
Et pour le fichier final mes limites sont largement dépasséees...

* problème sur la 3è ligne de la macro (DATAsituation)
* et aussi avec \ données\validation je pense.

voilà je laisse tomber "pour ce soir" et n'hésite donc pas à te solliciter
encore...

en te remerciant

cafrine
 

Pièces jointes

  • planning2.zip
    22.5 KB · Affichages: 24
  • planning2.zip
    22.5 KB · Affichages: 22
  • planning2.zip
    22.5 KB · Affichages: 23
D

Dan

Guest
Bonsoir Cafrine,

Ok le pb de "Datasituation" est simple, il suffit dans ta macro de mettre "Situation" à la place ou de mettre "Datasituation" à la place de "Situation" que tu trouveras dans Menu / Insertion / Nom / définir.
Pour ce qui est de données Validation, je ne vois de quoi tu veux parler.

J'ai récupéré ton fichier plus complet ici et là je vois mieux ce que tu veux faire.
Les plages que tu as placées après Sh.name ne sont pas correctes puisque dans ton cas il faut définir les plages par feuille donc :

If Sh.Name = ("1 quadri 2004") Then
Set Plage = Range("D4:D34;H4:H34;L4:L34;P4:p33")
ElseIf Sh.Name = ("2 quadri 2004") Then
Set Plage = Range("D4:D34;H4:H34;L4:L34;P4:p33")
ElseIf ...etc pour chaque feuille
Else: Exit Sub

N'hésite pas à me dire si tu ne comprends pas et si cela fonctionne ou non.

Dans l'attente de te lire

Dan
 
C

cafrine

Guest
bonsoir Dan

je pensais avoir mis tout ce qu'il fallait mais il y a encore un hic :
les couleurs ne s'affichent pas....
je te laisse y jeter un coup d'oeil
en te remerciant d'avance

cafrine
 

Pièces jointes

  • planningA.zip
    27.4 KB · Affichages: 30
D

Dan

Guest
Bonsoir,

Toutes mes excuses mais j'ai fait une petite erreur dans la macro et que tu pourras facilement corriger :

Remplace les ";" par des "," dans toutes les instructions "Set Plage = Range("D4:D34;H4:H34;L4:L34;P4:p33")"

Cela donne pour cet exemple : Set Plage = Range("D4:D34,H4:H34,L4:L34,P4:p33")

A part cela cela fonctionne chez moi.

Si pb n'hésite pas.

@++ Dan
 

Discussions similaires

Réponses
2
Affichages
140

Statistiques des forums

Discussions
312 099
Messages
2 085 282
Membres
102 848
dernier inscrit
boum