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
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 SubCordialement,
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...
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....
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
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
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
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)....
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 SubComme 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...
Il subsiste un bug au niveau du filtre, il semblerait que "Tous" reste affiché en permanence si case 1 à 6 cochée....
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
Re,
Pour la saisie: nouvel essai.....avec choix et champs imposés....
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
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,
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 ?
Cordialement,
