Excel UserForm aide
CedricG62
Messages postés
38
Date d'inscription
Statut
Membre
Dernière intervention
-
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je voulais faire un msgbox et sélectionner un choix dans une liste mais en cherchant j'ai vu qu'il fallait faire avec un userform.
N'en ayant jamais fait, j'ai repris un code que j'ai trouvé et fait quelques modifications pour essayer d'avoir ce que je veux mais ça ne fonctionne pas :
Je veux avoir 1 msgbox pour rentrer un valeur qui ira à la suite dans la colonne D de la feuille "Formules" et la valeur sélectionné dans la liste de choix avec le userform ira à la suite dans la colonne E.
Merci de votre aide,
Cédric
Je voulais faire un msgbox et sélectionner un choix dans une liste mais en cherchant j'ai vu qu'il fallait faire avec un userform.
N'en ayant jamais fait, j'ai repris un code que j'ai trouvé et fait quelques modifications pour essayer d'avoir ce que je veux mais ça ne fonctionne pas :
Private Sub ComboBox1_Change() Dliz = Cells(Rows.Count, 4).End(xlUp).Row + 1 Dlie = InputBox("Nom description", "Insérer nouvelle description") If ComboBox1.ListIndex >= 0 Then Me.Hide MsgBox ("Vous avez répondu " & ComboBox1.Value) Sheets("Formules").Select Range("D", Dliz) = Dlie Range("E", Dliz) = ComboBox1.Value Sheets("Copier_coller").Select End If End Sub Private Sub UserForm_Initialize() Reponse = Array("Bolts_Nuts_Washers", "Components", "HILTI", "Plate", "Profiles", "Round_Square_bars", "Rubber", "Standard_accessories", "Tube", "Tube_accessories") ComboBox1.List = Reponse End Sub
Je veux avoir 1 msgbox pour rentrer un valeur qui ira à la suite dans la colonne D de la feuille "Formules" et la valeur sélectionné dans la liste de choix avec le userform ira à la suite dans la colonne E.
Merci de votre aide,
Cédric
A voir également:
- Excel UserForm aide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
4 réponses
Bonjour,
J'ai une erreur d'objet
Je crois avoir fais quelque chose de basique "titre + liste déroulante", est ce possible d'ajouter un bouton de validation une fois un nom dans la liste sélectionné ?
Ci-joint mon fichier : https://www.cjoint.com/c/LEFg1oYxe8k
Merci à vous,
J'ai une erreur d'objet
Je crois avoir fais quelque chose de basique "titre + liste déroulante", est ce possible d'ajouter un bouton de validation une fois un nom dans la liste sélectionné ?
Ci-joint mon fichier : https://www.cjoint.com/c/LEFg1oYxe8k
Merci à vous,
J'ai réussi du coup à faire apparaitre ce que je veux (même si inputbox arrive après combobox ce que je ne comprends pas car la commande est avant...)
Mais là n'est pas vraiment mon problème ahah
Je veux que ces 2 valeurs viennent se remplir à la suite d'un tableau (colonne D et E de la feuille Formules) mais à la fin de la macro, il n'y avait rien de nouveau :/
Mais là n'est pas vraiment mon problème ahah
Je veux que ces 2 valeurs viennent se remplir à la suite d'un tableau (colonne D et E de la feuille Formules) mais à la fin de la macro, il n'y avait rien de nouveau :/
Merci ça fonctionne :)
Est ce possible d'ajouter un test : si l'inputbox saisie existe déjà dans la colonne D, alors arrêter la macro et ne pas demander la combobox ? (car là la macro me demande d'abord la combobox et je peux également rentrer des doublons...)
Ensuite, j'ai un bouton validé sur le userform de ma combobox mais il ne fonctionne pas car dès que je sélectionne un choix dans la liste, je passe directement à la suite sans avoir besoin de valider mon choix. Comment puis je faire pour valider mon choix avec ce bouton ?
Est ce possible d'ajouter un test : si l'inputbox saisie existe déjà dans la colonne D, alors arrêter la macro et ne pas demander la combobox ? (car là la macro me demande d'abord la combobox et je peux également rentrer des doublons...)
Ensuite, j'ai un bouton validé sur le userform de ma combobox mais il ne fonctionne pas car dès que je sélectionne un choix dans la liste, je passe directement à la suite sans avoir besoin de valider mon choix. Comment puis je faire pour valider mon choix avec ce bouton ?
Si tu veux un bouton, il faut supprimer la macro Private Sub ComboBox1_Change()
Tu mets ceci à la place:
Voilà
@+ Le Pivert
Tu mets ceci à la place:
Option Explicit Private Sub CommandButton1_Click() Dim Dliz, Dlie Dim Trouve As Range Dliz = Cells(Rows.Count, 4).End(xlUp).Row + 1 Dlie = InputBox("Nom description", "Insérer nouvelle description") Set Trouve = Sheets("Formules").Columns(4).Cells.Find(what:=Dlie, LookAt:=xlWhole) 'traitement de l'erreur possible : Si on ne trouve rien : If Trouve Is Nothing Then 'ici, traitement pour le cas où la valeur n'est pas trouvée If ComboBox1.ListIndex >= 0 Then Me.Hide MsgBox ("Vous avez répondu " & ComboBox1.Value) With Sheets("Formules") .Range("D" & Dliz) = Dlie .Range("E" & Dliz) = ComboBox1.Value End With End If Else MsgBox "Valeur presente: " & Trouve.Address Exit Sub End If Sheets("Copier_coller").Select End Sub Private Sub UserForm_Initialize() Dim Reponse Reponse = Array("Bolts_Nuts_Washers", "Components", "HILTI", "Plate", "Profiles", "Round_Square_bars", "Rubber", "Standard_accessories", "Tube", "Tube_accessories") ComboBox1.List = Reponse ComboBox1.ListIndex = 0 End Sub
Voilà
@+ Le Pivert
Bonjour,
Merci pour le lien, il est très utile !
Néanmoins, j'aurais encore besoin de vos lumières...
J'ai fais un dernier UserForm pour mon fichier voici le code :
Pourquoi ma ligne avec les TextBox est elle surligné en jaune ? j'ai oublié des guillemets à un endroit ?
Et également n'y a t il pas une autre solution pour éviter toute la cascade de IF ? (avec un recherche H dans ma feuille pour retrouver le N° de colonne correspondant au ComboBox choisi par exemple)
Merci encore
Cédric
Merci pour le lien, il est très utile !
Néanmoins, j'aurais encore besoin de vos lumières...
J'ai fais un dernier UserForm pour mon fichier voici le code :
Option Explicit Private Sub Validation_Click() Dim Dlig, Dcol Dim Trouve As Range ' Tableau10 = Bolts_Nuts_Washers (N° colonne 1 ) ' Tableau11 = Components (N° colonne 9 ) ' Tableau12 = HILTI (N° colonne 17 ) ' Tableau13 = Plate (N° colonne 25 ) ' Tableau14 = Profiles (N° colonne 33 ) ' Tableau15 = Round_Square_bars (N° colonne 41 ) ' Tableau16 = Rubber (N° colonne 49 ) ' Tableau17 = Standard_accessories (N° colonne 57 ) ' Tableau18 = Tube (N° colonne 65 ) ' Tableau19 = Tube_accessories (N° colonne 73 ) ' Tableau3 = Anchors_standards (N° colonne 81 ) ' Tableau4 = Grating (N° colonne 89) ' Tableau5 = Grating-Component (N° colonne 97 ) ' Tableau6 = Grating-Fixations (N° colonne 105 ) ' Tableau7 = Grating-Option (N° colonne 113 ) If ComboBox1 = "Bolts_Nuts_Washers" Then Dcol = 1 Else If ComboBox1 = "Components" Then Dcol = 9 Else If ComboBox1 = "HILTI" Then Dcol = 17 Else If ComboBox1 = "Plate" Then Dcol = 25 Else If ComboBox1 = "Profiles" Then Dcol = 33 Else If ComboBox1 = "Round_Square_bars" Then Dcol = 41 Else If ComboBox1 = "Rubber" Then Dcol = 49 Else If ComboBox1 = "Standard_accessories" Then Dcol = 57 Else If ComboBox1 = "Tube" Then Dcol = 65 Else If ComboBox1 = "Tube_accessories" Then Dcol = 73 Else If ComboBox1 = "Anchors_standards" Then Dcol = 81 Else If ComboBox1 = "Grating" Then Dcol = 89 Else If ComboBox1 = "Grating-Component" Then Dcol = 97 Else If ComboBox1 = "Grating-Fixations" Then Dcol = 105 Else If ComboBox1 = "Grating-Option" Then Dcol = 113 Dlig = Worksheets("Liste IENET").Cells(Rows.Count, Dcol).End(xlUp).Row + 1 Set Trouve = Sheets("Liste IENET").Columns(Dcol).Cells.Find(what:=Dlig, LookAt:=xlWhole) With Sheets("Liste IENET") .Range(Dcol + 1 & Dlig) = TextBox1 'apparement Excel n'aime pas comment j'ai défini ces lignes là .Range(Dcol + 2 & Dlig) = TextBox2 .Range(Dcol + 3 & Dlig) = TextBox3 .Range(Dcol + 4 & Dlig) = TextBox4 .Range(Dcol + 5 & Dlig) = TextBox5 .Range(Dcol + 6 & Dlig) = TextBox6 End With End If End If End If End If End If End If End If End If End If End If End If End If End If End If End If Sheets("Copier_coller").Select End Sub Private Sub UserForm_Initialize() Dim Reponse 'Reponse = Liste_type (défini directement dans le combobox) 'ComboBox1.List = Reponse ComboBox1.ListIndex = 0 End Sub
Pourquoi ma ligne avec les TextBox est elle surligné en jaune ? j'ai oublié des guillemets à un endroit ?
Et également n'y a t il pas une autre solution pour éviter toute la cascade de IF ? (avec un recherche H dans ma feuille pour retrouver le N° de colonne correspondant au ComboBox choisi par exemple)
Merci encore
Cédric
avec un recherche H dans ma feuille pour retrouver le N° de colonne correspondant au ComboBox choisi par exemple)
https://www.developpez.net/forums/d1551029/logiciels/microsoft-office/excel/macros-vba-excel/retrouver-numero-d-colonne-d-apres-entete/
ce qui donne ceci:
Pourquoi ma ligne avec les TextBox est elle surligné en jaune ?
mettre ceci:
Voilà
https://www.developpez.net/forums/d1551029/logiciels/microsoft-office/excel/macros-vba-excel/retrouver-numero-d-colonne-d-apres-entete/
ce qui donne ceci:
Private Sub ComboBox1_Change() Dim Recherche As Range Dim NumeroColonne As Integer Set Recherche = Rows(1).Find(ComboBox1.Value, LookIn:=xlValues, LookAt:=xlWhole) If Not Recherche Is Nothing Then NumeroColonne = Recherche.Column Dcol = NumeroColonne Else MsgBox "La colonne n'a pas été trouvée" End If End Sub
Pourquoi ma ligne avec les TextBox est elle surligné en jaune ?
mettre ceci:
.Cells(Dlig, Dcol + 1 ) = TextBox1
Voilà
Bonjour,
Je n'ai pas eu l'occasion de retravailler dessus avant d'où ma réponse un peu tardive...
Lorsque je lance la macro, il n'aime pas la façon dont j'ai écrit cette ligne (il l'a met en erreur)
Ci-dessous mon fichier si ça peut plus vous aider :
https://www.cjoint.com/c/LFnhvK7lTZk
Merci,
Cédric
Je n'ai pas eu l'occasion de retravailler dessus avant d'où ma réponse un peu tardive...
Lorsque je lance la macro, il n'aime pas la façon dont j'ai écrit cette ligne (il l'a met en erreur)
Dlig = Worksheets("Liste IENET").Cells(Rows.Count, Dcol).End(xlUp).Row + 1
Ci-dessous mon fichier si ça peut plus vous aider :
https://www.cjoint.com/c/LFnhvK7lTZk
Merci,
Cédric
La variable Dcol n'est pas déclarée!
Il faut mettre Option Explicit en début de module pour forcer la déclaration des variables comme ceci:
voilà
@+
Il faut mettre Option Explicit en début de module pour forcer la déclaration des variables comme ceci:
Option Explicit Dim Dcol As Long Private Sub ComboBox1_Change() Dim Recherche As Range Dim NumeroColonne As Integer Sheets("Liste IENET").Activate Set Recherche = Rows(2).Find(ComboBox1.Value, LookIn:=xlValues, LookAt:=xlWhole) If Not Recherche Is Nothing Then NumeroColonne = Recherche.Column Dcol = NumeroColonne Else MsgBox "La colonne n'a pas été trouvée" End If End Sub Private Sub Validation_Click() Dim Dlig Dim Trouve As Range Dlig = Worksheets("Liste IENET").Cells(Rows.Count, Dcol).End(xlUp).Row + 1 Set Trouve = Sheets("Liste IENET").Columns(Dcol).Cells.Find(what:=Dlig, LookAt:=xlWhole) With Sheets("Liste IENET") .Cells(Dlig, Dcol + 1) = TextBox1 .Cells(Dlig, Dcol + 2) = TextBox2 .Cells(Dlig, Dcol + 3) = TextBox3 .Cells(Dlig, Dcol + 4) = TextBox4 .Cells(Dlig, Dcol + 5) = TextBox5 .Cells(Dlig, Dcol + 6) = TextBox6 End With Sheets("Copier_coller").Select End Sub
voilà
@+
Il faut aussi définir la variable "ComboBox1.Value" comme pour "Dcol" ?
NON ce n'est pas une variable
Si tu avais mis cela tu aurais vu où se situait l'erreur:
Il y a la ligne 500 qui est remplie.
Il suffit de l'effacer et tout rentre dans l'ordre
@+
NON ce n'est pas une variable
Si tu avais mis cela tu aurais vu où se situait l'erreur:
With Sheets("Liste IENET") .Cells(Dlig, Dcol + 1) = TextBox1 MsgBox TextBox1 MsgBox Dlig MsgBox Dcol + 1
Il y a la ligne 500 qui est remplie.
Il suffit de l'effacer et tout rentre dans l'ordre
@+
Je t'embête beaucoup ahah mais tu m'aide énormément...
Je veux faire deux dernière macro pour mon fichier :
La première qui va copier coller en valeur les données de la feuille "IENET" dans un nouveau classeur que la macro crée elle même, j'ai fais un petit essai et j'ai déjà une erreur :
Et la seconde, qui va rester plus basique pour faire un onglet explicatif de comment mon fichier fonctionne où là je vais juste avoir des cases à cocher pour cacher/afficher des lignes avec des infos dessus donc je ne devrais pas avoir trop de problème :)
Je veux faire deux dernière macro pour mon fichier :
La première qui va copier coller en valeur les données de la feuille "IENET" dans un nouveau classeur que la macro crée elle même, j'ai fais un petit essai et j'ai déjà une erreur :
Private Sub CommandButton3_Click() Sheets("IENET").Select Cells.Select '(cette commande là est détecté quand on fait l'enregistrement de macro 'mais quand on lance la macro, elle passe en erreur sur cette ligne....) 'Range("A1:AB10000").Select (j'ai testé la sélection comme ça mais ça ne fonctionne pas) Selection.Copy Workbooks.Add.SaveAs Filename:="Fichier importation dans IENET" Workbooks("Fichier importation dans IENET.xlsx").Activate Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub
Et la seconde, qui va rester plus basique pour faire un onglet explicatif de comment mon fichier fonctionne où là je vais juste avoir des cases à cocher pour cacher/afficher des lignes avec des infos dessus donc je ne devrais pas avoir trop de problème :)
Tu peux simplement mettre ceci:
un exemple:
https://excelcorpo.com/copier-une-feuille-de-calcul-dans-un-nouveau-classeur-avec-excel-vba/#:~:text=feuilles%20de%20calcul-,Copier%20une%20feuille%20de%20calcul%20dans%20un%20nouveau%20classeur%20avec,ou%20Copier%20dans%20le%20menu.
@+
ActiveSheet.Copy
un exemple:
https://excelcorpo.com/copier-une-feuille-de-calcul-dans-un-nouveau-classeur-avec-excel-vba/#:~:text=feuilles%20de%20calcul-,Copier%20une%20feuille%20de%20calcul%20dans%20un%20nouveau%20classeur%20avec,ou%20Copier%20dans%20le%20menu.
@+
Bonjour,
En effet, les valeurs saisies étaient envoyés sur les lignes 500+ maintenant ça fonctionne bien :)
Il ne reste que le copier coller qui ne copie colle pas en valeur et donc créer des erreurs mais ce n'est plus du tout le même sujet !
Je vous remercie pour toute l'aide que vous m'avais apporté
Bonne continuation à vous,
Cédric
En effet, les valeurs saisies étaient envoyés sur les lignes 500+ maintenant ça fonctionne bien :)
Il ne reste que le copier coller qui ne copie colle pas en valeur et donc créer des erreurs mais ce n'est plus du tout le même sujet !
Je vous remercie pour toute l'aide que vous m'avais apporté
Bonne continuation à vous,
Cédric
Si cela peut t'aider:
https://www.automateexcel.com/fr/vba/coller-valeurs-et-collage-special/
@+ Le Pivert
https://www.automateexcel.com/fr/vba/coller-valeurs-et-collage-special/
@+ Le Pivert