Excel UserForm aide
Fermé
CedricG62
Messages postés
38
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
4 novembre 2022
-
30 mai 2022 à 13:27
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 14 juin 2022 à 11:33
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 14 juin 2022 à 11:33
A voir également:
- Excel UserForm aide
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
- Comment calculer la moyenne sur excel - Guide
4 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
30 mai 2022 à 17:48
30 mai 2022 à 17:48
Bonjour,
corriger ceci:
--@+ Le Pivert
corriger ceci:
Range("D" & Dliz) = Dlie Range("E" & Dliz) = ComboBox1.Value
--@+ Le Pivert
CedricG62
Messages postés
38
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
4 novembre 2022
31 mai 2022 à 09:03
31 mai 2022 à 09:03
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,
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
31 mai 2022 à 09:20
31 mai 2022 à 09:20
C'est normal que cela ne fonctionne pas!
Remplace ta ListBox par une ComboBox et cela fonctionnera!
Remplace ta ListBox par une ComboBox et cela fonctionnera!
CedricG62
Messages postés
38
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
4 novembre 2022
>
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
31 mai 2022 à 14:03
31 mai 2022 à 14:03
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 :/
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
CedricG62
Messages postés
38
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
4 novembre 2022
31 mai 2022 à 16:26
31 mai 2022 à 16:26
Comme ceci:
@+ Le Pivert
Sheets("Formules").Range("D" & Dliz) = Dlie Sheets("Formules").Range("E" & Dliz) = ComboBox1.Value
@+ Le Pivert
CedricG62
Messages postés
38
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
4 novembre 2022
>
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
1 juin 2022 à 14:43
1 juin 2022 à 14:43
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 ?
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
CedricG62
Messages postés
38
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
4 novembre 2022
Modifié le 1 juin 2022 à 16:59
Modifié le 1 juin 2022 à 16:59
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
CedricG62
Messages postés
38
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
4 novembre 2022
Modifié le 8 juin 2022 à 15:27
Modifié le 8 juin 2022 à 15:27
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
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
Modifié le 8 juin 2022 à 17:59
Modifié le 8 juin 2022 à 17:59
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à
CedricG62
Messages postés
38
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
4 novembre 2022
>
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
13 juin 2022 à 09:36
13 juin 2022 à 09:36
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
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
CedricG62
Messages postés
38
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
4 novembre 2022
13 juin 2022 à 11:45
13 juin 2022 à 11:45
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à
@+
CedricG62
Messages postés
38
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
4 novembre 2022
>
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
13 juin 2022 à 12:00
13 juin 2022 à 12:00
La macro tourne par contre rien ne vient s'afficher à la suite dans les tableaux...
J'ai également ajouté cette ligne là dans le "with" :
Il faut aussi définir la variable "ComboBox1.Value" comme pour "Dcol" ?
J'ai également ajouté cette ligne là dans le "with" :
.Cells(Dlig, Dcol) = ComboBox1.Value
Il faut aussi définir la variable "ComboBox1.Value" comme pour "Dcol" ?
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
CedricG62
Messages postés
38
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
4 novembre 2022
Modifié le 13 juin 2022 à 14:17
Modifié le 13 juin 2022 à 14:17
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
@+
CedricG62
Messages postés
38
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
4 novembre 2022
13 juin 2022 à 14:44
13 juin 2022 à 14:44
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 :)
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
13 juin 2022 à 15:51
13 juin 2022 à 15:51
Pour sélectionner toute la feuille :
@+
Sheets("IENET").Activate ActiveSheet.Cells.Select
@+
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
13 juin 2022 à 16:41
13 juin 2022 à 16:41
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.
@+
CedricG62
Messages postés
38
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
4 novembre 2022
>
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
14 juin 2022 à 09:44
14 juin 2022 à 09:44
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
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
CedricG62
Messages postés
38
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
4 novembre 2022
14 juin 2022 à 11:33
14 juin 2022 à 11:33
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