[VBA]Conseil macro pour la création d'un planning

Nico67800 Messages postés 9 Date d'inscription jeudi 21 juin 2012 Statut Membre Dernière intervention 13 septembre 2012 - 21 juin 2012 à 17:09
Nico67800 Messages postés 9 Date d'inscription jeudi 21 juin 2012 Statut Membre Dernière intervention 13 septembre 2012 - 26 juin 2012 à 17:40
Bonjour à tous,

Dans le cadre de la création d'un planning sur Excel pour le travail, j'ai besoin d'une macro qui permet de changer une zone de couleur en fonction d'un champ.

Mes connaissances en VBA étant très limitées j'ai réussi à bidouiller une macro mais malheureusement ça ne fait pas totalement mon bonheur.
Ce champ est limité à 10 possibilités proposées sous forme d'un menu déroulant.
J'ai crée une macro qui permet de faire ça (voir ci-dessous)
Le principe est simple :
La cellule I5 propose les champs suivants :
-disponible, intervention confirmée, intervention à confirmer, atelier, formation, congés, jour férié, intervention étranger confirmée, intervention étranger à confirmer, divers.
Une fois le champ sélectionné, j'appuie sur un bouton lié à la macro qui colore ma sélection « I2 à I8 ». Chaque champ est lié à une couleur.
En théorie ça fonctionne, mais cette méthode ne peut être appliquée à grande échelle. En effet ça nécessiterait de faire une macro par personne par semaine soit plus de 500.

Est-il possible de réutiliser ma macro et de « l'automatiser » pour n'en faire qu'une par personne ?
J'ai juste besoin de changer à chaque fois le champ et la plage correspondante et j'aimerais éviter de faire la même opération pour chaque jour.
Vous trouverez ci-joint le fichier Excel que j'utilise, ça sera probablement beaucoup plus parlant de jeter un coup d??il au fichier.
Juste en dessous vous pouvez voir en exemple ma macro utilisée :
Sub couleurs_s1()
' couleurs_s1 Macro
'Dim Ref As Range
Set Ref = ActiveCell
If Range("I5") = "congés" Then
Range("I2:I8").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight2
.TintAndShade = 0.399975585192419
.PatternTintAndShade = 0
End With
End If
If Range("I5") = "formation" Then
Range("I2:I8").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
If Range("I5") = "atelier" Then
Range("I2:I8").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
If Range("I5") = "intervention confirmée" Then
Range("I2:I8").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
If Range("I5") = "intervention à confirmer" Then
Range("I2:I8").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 49407
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
If Range("I5") = "disponible" Then
Range("I2:I8").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
If Range("I5") = "jour férié" Then
Range("I2:I8").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight2
.TintAndShade = 0.399975585192419
.PatternTintAndShade = 0
End With
End If
If Range("I5") = "intervention étranger à confirmer" Then
Range("I2:I8").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent4
.TintAndShade = 0.79981688894314
.PatternTintAndShade = 0
End With
End If

If Range("I5") = "intervention étranger confirmée" Then
Range("I2:I8").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent4
.TintAndShade = 0.399975585192419
.PatternTintAndShade = 0
End With
End If

If Range("I5") = "divers" Then
Range("I2:I8").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Ref.Select
End Sub

Merci beaucoup pour votre aide !
Nicolas
Tapez le texte de l'url ici.

20 réponses

Nico67800 Messages postés 9 Date d'inscription jeudi 21 juin 2012 Statut Membre Dernière intervention 13 septembre 2012
21 juin 2012 à 17:11
Le lien de la pièce jointe est posté en bas de mon précédent message
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 juin 2012 à 17:18
Bonjour,
- Tu aurais du ouvrir cette discussion dans la section Langages dérivés > VBA
Prends-en bonne note pour la fois prochaine
- un code présenté sans indentation me fait fuir. Utilise donc la balise code (3ème icône en partant de la droite). Ce n'est pas un luxe. Si tu veux que l'on puisse lire et analyser ton code confortablement. C'est la moindre des choses.
- seuls les imprudents ouvriront ton lien (un classeur ?). Tu dois être capable d'isoler ton problème et de l'exposer suffisamment précisément pour que nul n'ait besoin de poser une question complémentaire.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Nico67800 Messages postés 9 Date d'inscription jeudi 21 juin 2012 Statut Membre Dernière intervention 13 septembre 2012
21 juin 2012 à 17:43
Merci d'être indulgent c'est la première fois que je demande de l'aide sur le forum, je prends en compte l'ensemble des remarques formulées à mon égard.
- Concernant la section c'est noté pour la prochaine fois.
- Voici mon code proposé de façon lisible :
Sub couleurs_s1()
' couleurs_s1 Macro
'Dim Ref As Range
Set Ref = ActiveCell
If Range("I5") = "congés" Then
    Range("I2:I8").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorLight2
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
    End With
    End If
If Range("I5") = "formation" Then
    Range("I2:I8").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    End If
If Range("I5") = "atelier" Then
    Range("I2:I8").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    End If
If Range("I5") = "intervention confirmée" Then
    Range("I2:I8").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    End If
If Range("I5") = "intervention à confirmer" Then
    Range("I2:I8").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 49407
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End If
If Range("I5") = "disponible" Then
    Range("I2:I8").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5296274
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End If
If Range("I5") = "jour férié" Then
    Range("I2:I8").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorLight2
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
    End With
    End If
If Range("I5") = "intervention étranger à confirmer" Then
    Range("I2:I8").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent4
        .TintAndShade = 0.79981688894314
        .PatternTintAndShade = 0
    End With
    End If

If Range("I5") = "intervention étranger confirmée" Then
    Range("I2:I8").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent4
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
    End With
End If

If Range("I5") = "divers" Then
    Range("I2:I8").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    End If
Ref.Select
End Sub


- J'ai mis à disposition mon fichier Excel parce que d'un coup d'oeil il pemettra d'aider à comprendre ma problématique.
Si ça n'est pas possible ou permis je suis prêt à répondre aux questions ou à fournir des informations plus précises si besoin.

Merci par avance.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 juin 2012 à 19:01
Ce n'est pas que ce n'est pas permis ! C'est tout simplement que nombreux (comme moi) refusent (pour plusieurs raisons, dont de sécurité) d'ouvrir un classeur qu'ils n'ont pas créé !
Je regarderai ton code après dîner


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 juin 2012 à 21:17
Bon. Me voilà donc.
J'ai lu tes explications et ton code.
Les explications ne sont pas vraiment claires, mais ce passage m'intrigue (et est peut-être une piste de compréhension) :
La cellule I5 propose les champs suivants :
-disponible, intervention confirmée, intervention à confirmer, atelier, formation, congés, jour férié, intervention étranger confirmée, intervention étranger à confirmer, divers.
Une fois le champ sélectionné, j'appuie sur un bouton lié à la macro qui colore ma sélection « I2 à I8 ». Chaque champ est lié à une couleur.
En théorie ça fonctionne, mais cette méthode ne peut être appliquée à grande échelle. En effet ça nécessiterait de faire une macro par personne par semaine soit plus de 500.

Est-il possible de réutiliser ma macro et de « l'automatiser » pour n'en faire qu'une par personne ?
J'ai juste besoin de changer à chaque fois le champ et la plage correspondante et j'aimerais éviter de faire la même opération pour chaque jour.

Que veux-tu dire exactement ? Que tu aurais mis une combobox par cellule offrant un choix ?
Dis-nous, car alors, ton véritable problème est celui de la conception-même de ton appli.
Et qu'est cette cellule I15 ? Est-elle la seule dans ce cas ?
Explique donc l'organisation technique de ce planning


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 juin 2012 à 22:01
Tu aurais de toutes manières beaucoup moins de problèmes en ne passant pas, comme tu le fais, par des "Select" pour ensuite traiter la "Selection", ce qui a pour effet majeur de ralentir considérablement l'exécution !
Sous VBA/Excel, on travaille directement par référence aux objets de Excel (on ne les sélectionne pas pour les traiter).
que vient par ailleurs faire :
Dim Ref As Range
Set Ref = ActiveCell

alors que je ne vois pas où tu utilises ref ?
Quelle est la "relation relative" entre I5 et la plage traitée (I2:I8) ?
Si toujours la même (même "écart", même nombre de lignes, etc ...) ===>> oui ===>> une simple sub paramétrée et l'utilisation de Offset feront l'affaire...
Tous tes IF ... Then ... gagneraient à être remplacés par un select case.
J'ai de toutes manières la très forte impression de ce que tu as construit une petite usine à gaz et que tu devrais en revoir la conception .

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 juin 2012 à 22:46
Je vais t'aider à "repenser" le tout.
Tu vas commencer par regarder ce que ferait ceci :
un classeur tout neuf
Sur Feuil1 : tu inséres une combobox (prise dans la boîte à outils des contrôles activex ===>> combobox1
Tu mets la propriété ListFillRange de cette combobox à === >> Feuil2!A1:A4
et tu mets sa propriété visible à False
Sur feuil2 : tu écris ce que tu veux dans les cellules A1,A2,A3 et A4

Dans le module de code de Feuil1 :
Private ou As Range
Private Sub ComboBox1_Click()
  ou.Value  = ComboBox1.Text
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If (Target.Column 2 Or Target.Column 5) And Target.Row Mod 4 = 0 Then
   Set ou = Target
   With ComboBox1
     .Left = Target.Left
     .Top = Target.Top
     .Width = Target.Width
     .Height = Target.Height
      .Visible = True
   End With
 Else
   ComboBox1.Visible = False
 End If
End Sub


Voilà : passe maintenant en mode exécution et regarde ce qui se passe si tu te rends dans une cellule des lignes 4,8,12,16, etc ... de la colonne B ou de la colonne E
Et tu sauras déjà cela : comment n'utiliser que cette combobox pour plusieurs cellules définies.
Ce sera un bon début de saine réflexion.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 07:14
Ca y est ? As-tu fait le petit test précédent ? J'espère que oui et on va passer à un second test "collant" un peu plus à ton cas :

Sur Feuil1 (avec sa combo toujours là, hein):
1) tu repars à zéro en supprimant toutes les valeurs que tu y aurais saisies dans le test précédent
2) tu remplaces le code de son module par le suivant :
Private ou As Range
Private Sub ComboBox1_Click()
  dim i as integer
  For i = -3 To 3
    Sheets("Feuil2").Cells(ComboBox1.ListIndex + 1, 2).Copy Destination:=ou.Offset(i, 0)
  Next
  ou.Value = ComboBox1.Text
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If (Target.Column 2 Or Target.Column 5) And (Target.Row + 2) Mod 7 = 0 Then
   Set ou = Target
   With ComboBox1
     .Left = Target.Left
     .Top = Target.Top
     .Width = Target.Width
     .Height = Target.Height
     .Visible = True
   End With
 Else
   ComboBox1.Visible =  False
 End If
End Sub


Sur Feuil2 :
En colonne A : ce que tu veux en A1,A2,A3,A4,A5
En colonne B : aucune valeur, mais tu formates chaque cellule en fonction de la valeur en regard en colonne A (couleur que tu veux, etc ...)

Va maintenant sur feuil1 et vois ce qui se passe lorsque, en colonnes B ou E, tu entres dans une cellule lignes 5,12,19,126, etc ...

Voilà voilà (à la place de tout ton code)... cela devrait, je le pense, te donner de sacrées idées
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
mjpmjp Messages postés 115 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 29 juin 2012
22 juin 2012 à 10:01
bonjour
tu fais ton planning normal et tu clique sur un bouton "Coloriser"
tu fabrique ton bouton avec la boite a outil et dans sa fonction _Clik
tu teste Range("I5") avec

Contenu_De_I5=Range("I5").Value

Select Case Contenu_De_I5
   Case "congés"    ' comentaire sur la couleur
      RangeDeMaCouleur = "Z1" 'la cellule temoin que tu colorie pour congés
  Case Else
      MonFormPasDeCouleurPrevue.show
End Select
Call MaSubColoriseRange(RangeDeMaCouleur)


Private MaSubColoriseRange(AdressRange As String)
   Range("I8").Interior.Color = Range(AdressRange).Interior.Color
End Sub


juste un exemple (tapé en direct)
@+JP
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 10:06
Bonjour, mjpmjp,
Et tu crois que cela va résoudre le problème exposé ? (plein de cellules à traiter. I5 n'en est qu'une parmi d'autres)
Et ce n'est pas I8, mais un plage, qu'il veut reformater.
Même le bouton "coloriser" devient totalement inutile, avec ce que j'ai montré plus haut.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
mjpmjp Messages postés 115 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 29 juin 2012
22 juin 2012 à 10:54
bonjour, ucfoutu,

Tous tes IF ... Then ... gagneraient à être remplacés par un select case.

j'ai eu la meme solution en fonction de... et c'etait une amorce simple...

je n'ai pas ouvert le fichier...si c'est plus complexe...

@+JP
0
Nico67800 Messages postés 9 Date d'inscription jeudi 21 juin 2012 Statut Membre Dernière intervention 13 septembre 2012
22 juin 2012 à 11:07
Bonjour

Merci pour l'ensemble de tes réponses.

J'ai inséré un imprim écran qui présente mon document.

Pour faire simple la cellule I5 est la clé, selon le choix que tu fais sur cette cellule grâce au menu déroulant, la couleur de la plage "I2:I8 change en conséquence grâce à la macro. L'objectif est de pouvoir faire ça également pour la plage M2:M8 (qui doit changer en fonction du paramètre M5), pour le champ Q2:Q8 (qui devra changer de couleur en fonction du paramètre Q5) etc ...
Cette problématique est valable pour des plages séparées avec des paramètres différents mais au final nous voulons faire la même chose à chaque fois.
Le bouton en bas à gauche sert juste à lancer la macro.

Je t'invite à jeter un coup d'oeil à l'imprim écran posté en jpg.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 11:09
Je n'ai pas ouvert non plus le fichier.
La lecture de ses explications laisse suffisamment deviner
Pour mémoire :
j'appuie sur un bouton lié à la macro qui colore ma sélection « I2 à I8 »

et :
mais cette méthode ne peut être appliquée à grande échelle. En effet ça nécessiterait de faire une macro par personne par semaine soit plus de 500

laissent "entrevoir" beaucoup d'aspects (son classeur ne m'intéresse point et je ne courrais pas le moindre risque à l'ouvrir, comme déjà dit) !
Mais même les select case ne sont pas nécessaires. Je n'en parlais que par rapport à ses If ...
Le point important, dans mes messages précédents est : revoir la conception, directement.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Nico67800 Messages postés 9 Date d'inscription jeudi 21 juin 2012 Statut Membre Dernière intervention 13 septembre 2012
22 juin 2012 à 11:14
UCFOUTU, concernant ta proposition d'utiliser la combobox :
- j'ai suivi tes instructions, en créant une combobox sur la feuil1 d'un nouveau fichier. Je l'ai paramétré conformément à tes conseils.
Sur la feuil2 j'ai mis des données sur les cellules A1,A2,A3 et A4.
Ensuite j'ai copié le code que tu as écris sur VBA.

Que faut-il faire ensuite ? Sachant que ce code ne me reconnait aucune macro dans ma "boite à macro" ?
ça me donne ça :
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 11:15
As-tu fait les deux petits tests suggérés ? (avant d'aller plus loin) ?
Pour la suite des évènements, maintenant :
Je vois mieux à l'aide de ton image, mais elle ne me "parle" pas suffisamment.
Je comprends que les colonnes concernées sont la colonne I, puis M .
D'autres colonnes ? et si oui : toujours espacées de 3 en 3 à partir de la colonne I ? Car je vois que tu as des colonnes cachées (exemple sur ton image : colonnes K et L) !
Mais commence donc par les petits tests et reviens avec ces précisions, mais UNIQUEMENT ensuite.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 11:22
Que faut-il faire ensuite ? Sachant que ce code ne me reconnait aucune macro dans ma "boite à macro" ?

Tu vas par exemple sur ta feuil1 en cellule B4 (tu vas y voir apparaitre ta combo) ===>> tu y fais une sélection ===>> tu vas sur une autre cellule ===>> tu constates !
Tu auras la même réaction avec, par exemple : B8, E4, E12 , etc (toutes les rangs multiples de 4 dans la colonne B ou la colonne E .
Teste et tu verras !
Ta "boite à macros" est ici inutile. Il te suffit d'aller dans tes cellules et tout se déclenche seul.
Passe ensuite au 2ème test.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Nico67800 Messages postés 9 Date d'inscription jeudi 21 juin 2012 Statut Membre Dernière intervention 13 septembre 2012
22 juin 2012 à 14:36
Merci pour tes explications !

Alors pour faire simple j'ai effectué ton premier test (cette fois j'ai réussi à le faire fonctionner ! ) puis le second test (réussi également).
Ton code fonctionne bien, en effet je commence à y voir plus clair.

- Tout d'abord j'ai une question d'ordre technique qui traduit à nouveau mon niveau novice concernant ce sujet.
Quand tu utilises une combobox il n'y a pas de macro à lancer par "la boite à macro", j'ai réussi à executer le code mais à chaque fois je "galère" un peu.
En rentrant dans VBA je fais "Executer" mais quand je fais ça il essayer de m'ouvrir le menu des macros.
Quelle touche dois-je faire pour que ça fonctionne ?
Comme je t'ai dis précédemment j'ai réussi ton test.
En revanche en sauvegardant le fichier et en l'ouvrant à nouveau quand je suis sur la feuil1, je ne vois plus les menus déroulant et je vois le message suivant : "Impossible de sortir du mode création, le contrôle 'ComboBox1' ne peut pas être créé."
Que dois-je faire pour que la combobox soit utilisable dès l'ouverture du fichier ?

- Je vais essayer d'être plus précis sur les besoins que j'ai pour mon fichier :
Mon planning est construit de la manière suivante :
Les jours sont présentés par colonne et les créneaux horaires (matin / après midi) par ligne. L'imprim écran que j'ai posté ne représente que le planning d'une seule personne. En réalité il y aura bien plus de lignes.

Passons à l'exemple :

Semaine 1
Pour mon premier lundi de l'année j'utilise la cellule I5 et la plage I2:I8
Pour le mardi : M5 M2:M8
Pour le mercredi : Q5 Q2:Q8
Pour le jeudi : U5 U2:U8
Pour le vendredi : Y5 Y2:Y8

Semaine 2
Pour mon premier lundi de la semaine 2 AE5 AE2:AE8
Pour le mardi : AI5 AI2:AI8
Pour le mercredi : AM5 AM2:AM8
Pour le jeudi : AQ5 AQ2:AQ8
Pour le vendredi : AU5 AU2:AU8

Semaine 3
Pour le lundi : BA5 BA2:BA8
Pour le mardi : BE5 BE2:BE8
Etc ...

Je viens d'expliquer la suite logique horizontale maintenant je m'attaque à la suite verticale :

Personne n°1
Pour le lundi matin de la semaine 1 : I5 I2:I8
Pour le lundi matin (2ème créneau) de la semaine 1 : I12 I9:I15
Pour le lundi après-midi : I19 I16:I22
Pour le lundi après-midi 2ème créneau : I26 I23:I29

Personne n°2
Pour le lundi matin de la semaine 1 : I41 I38:I44
Pour le lundi matin (2ème créneau) de la semaine 1 : I48 I45:I51
Pour le lundi après-midi : I55 I52:I58
Pour le lundi après-midi 2ème créneau : I62 I59:I65

Personne n°3
Pour le lundi matin de la semaine 1 : I77 I74:I80
Pour le lundi matin (2ème créneau) de la semaine 1 : I84 I81:I87
Etc ...

J'espère que mon explication est claire.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 14:49
Je te réponds après la pêche (c'est la saison). A plus !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 16:38
Tu as de la chance (de passage pour changer de canne en raison du vent)
La combobox reste avec ton classeur lorsque tu sauvegardes.
avant de sauvegarder : sors du mode création
Elle n'est donc à créer qu'une seule fois sur ta feuille (et une fois pour toutes !)!
Elle apparaîtra seule lorsque tu iras dans l'une des cellules qu'elle doit gérer.
A plus.



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Nico67800 Messages postés 9 Date d'inscription jeudi 21 juin 2012 Statut Membre Dernière intervention 13 septembre 2012
26 juin 2012 à 17:40
Merci pour ta réponse !
0
Rejoignez-nous