Compléter des cellules via userform et case à cocher

Bonjour à tous,

je m'étais déjà tourné vers vous pour la partie "consultation de mon document" et tout fonctionne a merveille

Maintenant, je souhaiterais, si c'est possible ajouter le module d'ajout. Je m'explique :

On coche ce qui nous intéresse et cela gère ensuite nos choix. Par exemple, sous ajout :

Je coche lundi, mercredi, pour les jours, ensuite matin, puis équipe 1 et 2

Je complète la suite des champs qui suivent et cela s'injecte dans mon fichier excel par ligne. C'est à dire, un ligne pour lundi, la même sous mercredi, etc...

Ce qui permet ensuite dans la consultation de retrouver une ligne par objet.

Mais il me faudrait également que cela ne supprime pas les lignes déjà présentes lorsque cela s'injecte...

Enfin dans le boîte de dialogue

Mes connaissances en VBA ne vont pas si loin malheureusement

39planning.xlsm (35.23 Ko)

Bonjour babare01, le forum,

Code du bouton 'Ajouter à tester....

Private Sub CommandButton2_Click()
 Dim i As Integer,dl As Integer
 Dim jour As String, période As String, groupe As Integer

     For i = 17 To 23
      If Me.Controls("CheckBox" & i) Then jour = Me.Controls("CheckBox" & i).Caption
     Next i

     For i = 30 To 32
      If Me.Controls("CheckBox" & i) Then période = Me.Controls("CheckBox" & i).Caption
     Next i

     For i = 24 To 29
      If Me.Controls("CheckBox" & i) Then groupe = Me.Controls("CheckBox" & i).Caption
     Next i

 With Sheets("Feuil1")
  dl = .Range("A" & Rows.Count).End(xlUp).Row + 1
       .Range("A" & dl) = CDate(TextBox1)
       .Range("B" & dl) = jour
       .Range("C" & dl) = période
       .Range("D" & dl) = groupe
       .Range("E" & dl) = TextBox2
       .Range("F" & dl) = TextBox3
       .Range("G" & dl) = TextBox4
 End With
 MsgBox "Saisie effectuée": Unload Me
End Sub

Cordialement,

Bonjour xorsankukai,

Merci beaucoup pour votre réponse

Cela fonctionne en effet pour ajouter une ligne. Mais si je rajoute des coches sur deux jours par exemple, il ne prend pas cela en compte. C'est à dire qu'il ne va ajouter qu'une seule ligne

Re,

Merci pour le retour,

Je pensais justement que tu effectuais une saisie à la fois....j'avais conditionné tes cases en ce sens...

41planning.xlsm (36.00 Ko)

Donc tu veux cocher plusieurs jours...par contre une seule période et une seule équipe

Dans ce cas, comment procède-tu pour inscrire la date ? Plusieurs jours mais une seule date ????

Cordialement,

Re,

On peut appliquer les couleurs en fonction des groupes lors de la saisie....

26planningv2.xlsm (33.39 Ko)

Possibilité de cocher plusieurs jours.....par contre, dans ce cas, la date sera fausse (où alors elle n'a aucun lien avec le jour, date de planification ?).

Cordialement,

Oui en effet la date n’a aucun lien avec la planification. C’est une date que l’on met qui n’est pas liée au jour.

mon idée est de pouvoir sélectionner plusieurs jours à la fois, plusieurs période et plusieurs groupe à la fois…

Re,

mon idée est de pouvoir sélectionner plusieurs jours à la fois, plusieurs période et plusieurs groupe à la fois

Pour ce qui est des jours et des couleurs, ma proposition répond bien à ta demande ?

En revanche, si tu sélectionnes plusieurs jours et plusieurs périodes et plusieurs groupes, je ne vois pas quel résultat tu souhaites obtenir ?

Peux-tu montrer un exemple ?

Cordialement,

Alors oui pour les couleurs c'est vraiment bien. Après, si j'efface une ligne le mieux est de la sélectionner et de la supprimer je suppose ?

Pour mon idée de sélectionner plusieurs jours et plusieurs périodes et plusieurs groupes est en effet plus compliquée à comprendre. Il est vrai que plusieurs périodes est pas très utile.

Par contre, mon idée en sélectionnant plusieurs jour et plusieurs groupes est que le userform inscrive une ligne par groupe. En fichier joint un exemple si on sélectionnerait comme jour : mercredi jeudi et vendredi - période matin - groupe 1 et 4

13planningv2-1.xlsm (31.41 Ko)

Bonsoir,

A tester...

  • J'ai modifié tes TextBox "groupe" car la n°29 correspondait à 1...la N°24 à 6, donc maintenant TextBox24=1, TextBox25= 2 , etc
  • J'ai mis tes données sous forme de tableau structuré nommé "TbPlanning"....
Private Sub CommandButton2_Click()
 Dim i As Integer, dl As Integer
 Dim jour As String, période As String, groupe As Integer
 Dim lo As ListObject, couleur

     For i = 30 To 32
      If Me.Controls("CheckBox" & i) Then période = Me.Controls("CheckBox" & i).Caption
     Next i

 With Sheets("Feuil1").ListObjects("TbPlanning")
      dl = Cells(Rows.Count, 1).End(xlUp).Row

    For i = 17 To 23
     If Me.Controls("CheckBox" & i) Then
      jour = Me.Controls("CheckBox" & i).Caption
        For j = 24 To 29
         If Me.Controls("CheckBox" & j) Then
          groupe = Me.Controls("CheckBox" & j).Caption
           Cells(dl, 1) = CDate(TextBox1)
           Cells(dl, 2) = jour
           Cells(dl, 3) = période
           Cells(dl, 4) = groupe
           Cells(dl, 5) = TextBox2
           Cells(dl, 6) = TextBox3
           Cells(dl, 7) = TextBox4
            Select Case groupe
             Case 1: couleur = RGB(255, 255, 64) 'jaune clair
             Case 2: couleur = RGB(96, 255, 96) ' vert clair
             Case 3: couleur = RGB(128, 160, 224) ' bleu clair
             Case 4: couleur = RGB(192, 128, 32) ' marron
             Case 5: couleur = RGB(224, 42, 32) ' rouge clair
             Case 6: couleur = RGB(160, 64, 224) ' violet
             Case Else: couleur = xlNone
            End Select
           Range(Cells(dl, 1), Cells(dl, 7)).Interior.Color = couleur
           .ListRows.Add: dl = Cells(Rows.Count, 1).End(xlUp).Row
         End If
        Next j
       End If
      Next i
 End With
 MsgBox "Saisie effectuée": Unload Me
End Sub
34planningv3-1.xlsm (39.56 Ko)

Cordialement,

Bonjour,¨

je n'avais pas pensé au tableau structuré c'est une super idée merci beaucoup! Votre tableau fonctionne à merveille. J'ai regardé un peu toute la nuit et j'ai voulu (par obligation...) ajouter des choses et bien sûre que j'ai tout fait foiré

Au démarrage, j'arrive bien le premier userform que j'avais fait à la base. Ensuite, j'ai rajouté un bouton pour ouvrir un second userform que vous avez fait ci-dessus.. Maintenant, j'ai voulu ajouter pour les groupes en plus des 6, l'option "Tous" pour les cas où cela concernerait tout le monde.

En parallèle, j'ai aussi finalement voulu laisser la possibilité de choisir matin, après-midi ou nuit en choix multiple. Sur le même principe que les jours et les groupes, cela ferait un ligne à chaque fois. Par exemple :

Lundi matin groupe 1

Lundi après-midi groupe 1

Mardi matin groupe 2

Mardi après-midi groupe 2

Avec pour tous la même date et même description.

J'ai voulu donc reprendre votre travail et faire cela moi-même pour éviter de vous redéranger encore et encore..... mais je n'ai pas réussi. Pire encore, mon premier userform avec les filtres ne fonctionne plus du tout...

Du coup, je n'ai même pas osé voir comment faire pour faire ma textbox de texte libre en multiligne

Bref je galère vraiment... désolé de vous ennuyer avec tout ça

14planning-v2.xlsm (44.90 Ko)

Bonjour,

désolé de vous ennuyer avec tout ça

Pas de souci, le forum est là pour ça...

mon premier userform avec les filtres ne fonctionne plus du tout

Tu dois utiliser le nom du tableau dans tes macros de filtre...

A tester....(pour la saisie)....

11babare01.xlsm (41.77 Ko)

Cordialement,

Merci

De ce que j'ai vu le code a pu être bien "épuré" par rapport à la feuille précédente c'est cool. Par contre, si je veux que la case "Tous" agisse comme si il s'agissait du groupe 7 en quelque sorte, donc qu'au lieu que cela fasse une ligne par groupe mais une seule avec le terme Tous c'est possible aussi ?

Car pour le filtre je mets :

Private Sub UserForm_Initialize()
Set jour = CreateObject("Scripting.Dictionary")
Set période = CreateObject("Scripting.Dictionary")
Set groupe = CreateObject("Scripting.Dictionary")
groupe("tous") = ""
End Sub

Comme cela si on sélectionne groupe 1 par exemple, le tous est intégré dans mon filtre (enfin je pense du moins que j'ai fais juste...)

Bonjour,

Nouvel essai...

7babare02.xlsm (42.64 Ko)

Il subsiste un bug au niveau du filtre, il semblerait que "Tous" reste affiché en permanence si case 1 à 6 cochée....

Cordialement,

Re,

Nouvelle version....fonctionnelle chez moi..

20test-babare.xlsm (41.33 Ko)

Cordialement,

Re,

l'avant dernière version était quand même "correct", car en effet j'avais prédéfini le filtre pour que si on sélectionne un seul groupe, automatiquement le tous est pris en compte sur le filtre. Je trouvais assez pratique comme cela au moment du choix du filtre, le tous est choisi directement et on n'a pas besoin de le sélectionner en plus

Par contre au niveau de la saisie, je vois maintenant que si je coche le jour mais que j'oublie par exemple la période, il me mets le message que c'est OK alors que rien n'est saisit, ce qui est logique vu qu'il manque la période. Je ne sais pas si on peut imposer de mettre au moins une coche en jour, une en période, une en groupe et imposé le remplissage des textbox qui suivent...

Enfin, cerise sur le gâteau on arrive à mettre directement les bordures sur chaque ligne complétée ?

Re,

Pour la saisie: nouvel essai.....avec choix et champs imposés....

11test-babare.xlsm (42.38 Ko)

le tous est choisi directement et on n'a pas besoin de le sélectionner en plus

On peut cocher la case "Tous" par défaut, à l'ouverture de UserForm1 ? Libre à toi de la décocher ensuite.

Private Sub UserForm_Initialize()
 CheckBox17 = True
End Sub
12test-babare2.xlsm (40.08 Ko)

Pour les bordures, vu qu'il s'agit d'un tableau structuré, elles se mettent par défaut puisque le tableau évolue automatiquement.

Tu peux choisir un autre style dans l'onglet "Outils de tableau/Création",

Bonne soirée,

Dans les 2 fichiers j'obtiens le même message d'erreur à l'ouverture et cela me renvoie ici :

 If Sheets("Feuil1").ListObjects("TbPlanning").DataBodyRange Is Nothing Then
capture

Je viens de constater que si je remplis une fois le document avec des données, l'erreur disparait

Par contre, la fonction Tous n'est pas pris d'office

J'ai refait des tests et tout à l'air de fonctionner hormis le filtre mais je vais partir sur l'idée que la coche se mette par défaut. C'est parfait

Maintenant, je vois un souci auquel je n'ai pas pensé, c'est que plusieurs lignes se créent à la fois, mais qu'au final ça va devenir un peu compliqué pour moi de m'y retrouver si je dois faire une synthèse.

Je m'explique :

Si je coche lundi-mardi-mercredi, le matin, groupe 3 & 6, cela me fera 6 lignes pour le même texte libre. C'est ce que je veux, c'est parfait. Seulement, si dans 10 ou 15 jours, je vais retrouver ses 6 lignes cela va devenir complexes avec les futurs ajouts. Mon idée : rajouter une colonne après délai, et que dans un cas d'ajout, cela mette un X par exemple. Et si j'ajoute plusieurs ligne, le X ne se met que sur la première ligne d'ajout. Cela me permettra de retrouver les choses de manière individuelle. Je ne sais pas si vous voyez ce que je veux dire ?

Bonjour,

Je ne comprends pas d'où provient cette erreur, elle semble liée à l'ouverture de UserForm1.....

En désactivant son ouverture, plus d'erreur....

Seulement, si dans 10 ou 15 jours, je vais retrouver ses 6 lignes cela va devenir complexes avec les futurs ajouts

Tu auras une différence de date, non ?

tout à l'air de fonctionner hormis le filtre

Chez moi, le filtre fonctionne.....

  • Si je coche/décoche, les autres lignes sont bien filtrées (j'ai supprimé la coche par défaut de "Tous").
  • Pour UserForm2, j'ai ajouté la coche par défaut de "Tous".

Cependant, un point me chiffonne:

Si tu coches toutes les cases de 1 à 6, tu auras tout le groupe mais sur 6 lignes.

Si tu coches "Tous" uniquement, tu auras également tout le groupe mais sur une seule ligne.

Comment t'y retrouves-tu ?

33test-babare4.xlsm (44.33 Ko)

Cordialement,

Rechercher des sujets similaires à "completer via userform case cocher"