Formulaire en VBA dans feuille Excel
Résolu
cartman1706
Messages postés
282
Date d'inscription
Statut
Membre
Dernière intervention
-
cartman1706 Messages postés 282 Date d'inscription Statut Membre Dernière intervention -
cartman1706 Messages postés 282 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'utilise plusieurs fichiers Excel qui ont un format bien determiné.
J'ai créé une macro qui exectute plusieurs actions sur le fichier Excel, et qui fait apparaitre une fenetre popup contenant un tout petit formulaire :
- Une action conditionnée : OUI ou NON
- Une zone de saisie
Mon probleme est que je ne sais pas exploiter ces infos une fois renseignées.
En clair j'aimerai que lorsque qu'on selectionne OUI cela supprime des données dans une collone de la feuille et que ce que l'on mette dans la zone de saisie soit collée dans toutes les lignes (contenant des infos) d'une colone ...
J'ai créé un UserForm, mis des boutons et tout mais ne sais ni quel code y mettre pour leur affecter des actions, ni comment recuperer ces dites actions dans la macro originale ...
Ps : vous aurez deviné que je suis un Noob en VBA ;)
J'utilise plusieurs fichiers Excel qui ont un format bien determiné.
J'ai créé une macro qui exectute plusieurs actions sur le fichier Excel, et qui fait apparaitre une fenetre popup contenant un tout petit formulaire :
- Une action conditionnée : OUI ou NON
- Une zone de saisie
Mon probleme est que je ne sais pas exploiter ces infos une fois renseignées.
En clair j'aimerai que lorsque qu'on selectionne OUI cela supprime des données dans une collone de la feuille et que ce que l'on mette dans la zone de saisie soit collée dans toutes les lignes (contenant des infos) d'une colone ...
J'ai créé un UserForm, mis des boutons et tout mais ne sais ni quel code y mettre pour leur affecter des actions, ni comment recuperer ces dites actions dans la macro originale ...
Ps : vous aurez deviné que je suis un Noob en VBA ;)
A voir également:
- Formulaire en VBA dans feuille Excel
- Whatsapp formulaire opposition - Guide
- Liste déroulante excel - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Formulaire de réclamation facebook - Guide
- Mise en forme conditionnelle excel - Guide
6 réponses
Malheureusment avec ces informations, je ne peux te fournir un code qui te satisferait complétement!
Par contre je peux te donner quelques informations.
Dans un premier temps je suppose que tu as un bouton valider en bas de ton formulaire! Si tu double clic dessus tu aura acces au "Sub" qui correspond a l'action quand tu clilc sur le bouton. Il va falloir y mettre les actions que tu veux ici!
Dans un premier temps, tes boucles if afin de voir si les champs de ton formulaire sont bien remplis. Imaginons que tu es mid deux TextBox dans ton formulaire :
Ensuite passons a ta question principale....
Pour utiliser les infos des tes case a cocher et zone de saisie il te suffit juste de reprendre son nom et de mettre ".value" à la fin
Enfin voila, je pense que tu as compris le truc!
Ensuite pour ecrire dans excell bah il s'agit de la base de VBA
Sheets(1) pour dire que ce sera dans la feuille 1 de ton classeur
Cells(1,1) pour dire que ce sera dans la cellule ligne 1 colonne 1
Voila voila,
Je sais pas si je peux aider plus mais commence a coder quelque chose puis si tu as des questions vient poster ton code ici...
Ne sachant pas exactement ton souhait proprement dit, je ne peux pas t'aider plus pour le moment
Mais hésites pas ;)
Par contre je peux te donner quelques informations.
Dans un premier temps je suppose que tu as un bouton valider en bas de ton formulaire! Si tu double clic dessus tu aura acces au "Sub" qui correspond a l'action quand tu clilc sur le bouton. Il va falloir y mettre les actions que tu veux ici!
Dans un premier temps, tes boucles if afin de voir si les champs de ton formulaire sont bien remplis. Imaginons que tu es mid deux TextBox dans ton formulaire :
Private Sub CommandButton1_Click() if TextBox1.Value <> "" AND TextBox2 <> "" Then .....Ton code.... Unload Userform1 Else MsgBox("Tous les champs ne sont pas remplis") End If End Sub
Ensuite passons a ta question principale....
Pour utiliser les infos des tes case a cocher et zone de saisie il te suffit juste de reprendre son nom et de mettre ".value" à la fin
sheets(1).cells(1,1) = TextBox1.Value if OptionButton.Value = False Then ...
Enfin voila, je pense que tu as compris le truc!
Ensuite pour ecrire dans excell bah il s'agit de la base de VBA
Sheets(1).Cells(1,1) = "Ce que tu veux mettre dans la case"
Sheets(1) pour dire que ce sera dans la feuille 1 de ton classeur
Cells(1,1) pour dire que ce sera dans la cellule ligne 1 colonne 1
Voila voila,
Je sais pas si je peux aider plus mais commence a coder quelque chose puis si tu as des questions vient poster ton code ici...
Ne sachant pas exactement ton souhait proprement dit, je ne peux pas t'aider plus pour le moment
Mais hésites pas ;)
Bon alors ça marche deja beaucoup mieux mais pas pour tout.
En effet, lorsque que clique sur VALIDER il devrai mettre dans la colonne P a partir de la case P2 le contenu de la textbox si la case O correspondante n'est pas vide ... et non, ça n'ecrit pas... j'pige pas pourquoi !
En effet, lorsque que clique sur VALIDER il devrai mettre dans la colonne P a partir de la case P2 le contenu de la textbox si la case O correspondante n'est pas vide ... et non, ça n'ecrit pas... j'pige pas pourquoi !
Private Sub Annuler_Click() Unload UserForm1 End Sub Private Sub ref_OpenBat_Change() CodeOpenBat = ref_OpenBat.Value 'Récupères la valeur dans ta variable End Sub Private Sub suppr_NON_Click() End Sub Private Sub suppr_OUI_Click() End Sub Private Sub Valider_Click() Sheets("Arbo").Select 'Supression des departements If suppr_OUI Then Sheets("Arbo").Select Columns("D:D").Select Application.CutCopyMode = False Selection.ClearContents Range("D1").Select ActiveCell.FormulaR1C1 = "DEPARTEMENT" With ActiveCell.Characters(Start:=1, Length:=12).Font .Name = "Calibri" .FontStyle = "Gras" .Size = 8 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 3 End With End If 'inscription du CodeOpenBat For i = 2 To 1000 If Range("O" & i).Value = "" Then Else Range("P" & i).Value = CodeOpenBat End If Next i 'exit du popup Unload UserForm1 End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour info tu as du déclarer "CodeOpenBat" en variable global dans ton cas de figure...
C'est cool ça marche, car il s'agit d'un petit programme.
En gros, il faut eviter le plus possible de creer des variables globales, seulement le faire quand il n'y a pas d'autre choix!
La par exemple tu n'est pas obligé de changé ta variable "CodeOpenBat" a chaque fois que tu met un caractere dans le TextBox! tu peux juste l'initialiser quand tu clic sur valider. Et ça t'économise une variable globale :D
Nouveau code :
Bref, ce n'est qu'un détail mais c'est bien d'apprendre les bonnes manières dès le début
C'est cool ça marche, car il s'agit d'un petit programme.
En gros, il faut eviter le plus possible de creer des variables globales, seulement le faire quand il n'y a pas d'autre choix!
La par exemple tu n'est pas obligé de changé ta variable "CodeOpenBat" a chaque fois que tu met un caractere dans le TextBox! tu peux juste l'initialiser quand tu clic sur valider. Et ça t'économise une variable globale :D
Nouveau code :
Private Sub Annuler_Click() Unload UserForm1 End Sub Private Sub ref_OpenBat_Change() CodeOpenBat = ref_OpenBat.Value 'Récupères la valeur dans ta variable End Sub Private Sub Valider_Click() Dim CodeOpenBat As String Sheets("Arbo").Select CodeOpenBat = ref_OpenBat.Value 'Récupères la valeur dans ta variable 'Supression des departements If suppr_OUI Then Sheets("Arbo").Select Columns("D:D").Select Application.CutCopyMode = False Selection.ClearContents Range("D1").Select ActiveCell.FormulaR1C1 = "DEPARTEMENT" With ActiveCell.Characters(Start:=1, Length:=12).Font .Name = "Calibri" .FontStyle = "Gras" .Size = 8 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 3 End With End If 'inscription du CodeOpenBat For i = 2 To 1000 If Range("O" & i).Value = "" Then Else Range("P" & i).Value = CodeOpenBat End If Next i 'exit du popup Unload UserForm1 End Sub
Bref, ce n'est qu'un détail mais c'est bien d'apprendre les bonnes manières dès le début