Saisie automatique de champs userform depuis Inputbox

Bonjour,

Je débute en VBA et je ne connais pas encore toutes les astuces donc je me permets de venir vers vous.

J’aimerais créer un classeur en VBA pour le suivi d’expéditions de matériel en SAV. Mon but étant qu’au click sur le bouton « Saisir une nouvelle expédition », la userform « Nouvelle_expedition » s’ouvre suivie de l’inputbox qui demande de renseigner le matricule de l’expéditeur. En fonction de ce numéro cela vient renseigner les coordonnées de l’expéditeur automatiquement dans la userform. Toutes les données sont stockées dans l’onglet « Données ».

Je poste mon fichier en PJ

Un grand merci à celles et ceux qui prendront de leur temps pour m’aiguiller !

Bonne soirée

J-Baptiste

59jb.xlsm (19.39 Ko)

Bonjour

Un essai à tester. Te convient-il ?

Bye !

86jb-v1.xlsm (28.42 Ko)

Bonjour,

Merci d'avoir pris le temps de me répondre

C'est un bon début mais cela ne correspond pas tout à fait à mes attentes. En fait, je souhaiterais que ça soit une inputbox qui s'ouvre lors du click sur le bouton bleu et qui demande de renseigner le matricule de l'expéditeur. Ensuite on vient chercher dans l'onglet les coordonnées associées à ce matricule et automatiquement renseigner userform Nouvelle_Expedition. Est-ce possible ?

Merci à vous !

Bon dimanche

J-Baptiste

Bonjour toutes et tous

Merci à Gmb

un début ci-joint

crdlt,

André

Re,

Ce classeur ci-joint sans bouton en direct on cache le bouton de commande et la textbox search

le bouton de commande Go, je l'ai caché plus à droite de l'usf (toujours visible )

ainsi que pour la textbox TxtSearch

Note(s):

  • si rien dans le message box, on sort de la procédure
  • si texte saisi dans la message box, affiche un autre message box de notre saisi, il ne restera plus qu'à cliquer sur le btn oK
  • sélection automatique de la listbox et les textboxs affichent le résultat
  • ne pas effacer le bouton de commande3 Go ainsi que la textbox TxtSearch
  • ne pas supprimer lors du lancement de l'userform le sendkey pour le btn de commande Go

Nouvelle_expedition à l'initialize avec le sendkey du bouton de commande Go de l'userform en direct

@ remodeler @ vérifier @ tester @ améliorer

Bonjour à tous

Nouvel essai.

Bye !

57jb-v2.xlsm (29.98 Ko)

Merci pour vos propositions c'est exactement ce que je voulais !

J'en profite pour vous poser une autre question:

J’aimerais qu’à chaque nouveau click sur le bouton bleu, un numéro unique soit attribué à la userform « Nouvelle_Expedition » en incrémentant le numéro en rouge à partir de celui qui figure dans la case A8 de la feuille 1.

Une fois qu'on clique sur le bouton "valider" dans la userform, j'aimerais copier les champs du cadre "Destinataire" dans la Feuille 1.

Je vous poste à nouveau mon fichier EXCEL ici

Merci beaucoup !

J-Baptiste

23jb-v2.xlsm (25.60 Ko)

Nouvelle version.

Bye !

28jb-v2.xlsm (29.98 Ko)

Bonjour Messieurs,

Un grand merci pour avoir proposé des solutions ! Il s’avère que les codes proposés par « gmb » et « Andre13 » vont me servir. Par contre je n’arrive pas à les adapter comme je le souhaiterais.

Lorsque je suis dans la userform « Nouvelle_Expedition » et que je clique sur le bouton turquoise « Sélectionner un destinataire », je voudrais ouvrir une seconde Userform qui est « choix_destinataire ». Ensuite je voudrais pouvoir afficher dans cette userform l’équivalent de l’onglet « Destinataires » afin de pouvoir sélectionner un destinataire à partir de la barre de recherche présente dans cette userform. Je ne sais pas si je suis assez clair dans mes explications et surtout si cela est réalisable ?

Je poste le fichier adapté par mes soins ici.

Merci à vous :)

J-Baptiste

31jb-v2-1.xlsm (126.96 Ko)

Bonjour toutes et tous

est-ce-cela ?

25jb-v2-1-test00a.xlsm (127.60 Ko)

@ tester ci-joint

crdlt,

André

Bonjour,

Merci pour votre retour !

C'est un bon début mais j'aurais voulu savoir s'il était possible de faire quelques modifications mais je ne vois pas vraiment comment m'y prendre:

Lorsque je clique sur le bouton "Annuler" dans la userform "choix_destinataire", j'aimerais revenir dans la userform "Nouvelle_expedition" sans que cela efface les champ dejà renseignés.

Lorsque je sélectionne une ligne et que je clique sur le bouton "Valider" dans la userform "choix_destinataire", j'aimerais que cela renseigne le pavé "Destinataire" de la userform "Nouvelle_expedition". Est-ce réalisable ?

Merci pour votre aide !

J-Baptiste

Bonjour

Nouvelle version.

Bye !

36jb-v3.xlsm (130.32 Ko)

Merci pour votre retour, je ne pensais pas faire comme ça mais pourquoi pas ça fonctionne très bien. Par contre j’ai essayé de l’adapter à mon projet mais je n’ai pas réussi, j’ai dû manquer une étape même si je n’ai fait qu’un copier coller de votre code. Est-ce que vous auriez la possibilité de regarder svp ?

J’ai également une autre question et vous pourriez sans doute m’éclairer ! Je souhaiterais qu’à chaque click sur le bouton « Nouvelle Expédition » un n° de bordereau soit attribué du style 20-BRE-001 avec le chiffre en rouge qui évolue au fur et à mesure que l’on créer de nouvelles expéditions et le chiffre 20 qui correspond aux deux derniers caractères de l’année en cours (ici 20 pour 2020). Avez-vous une piste et où intégrer ce code (dans la userform « Nouvelle_expedition » ) ?

Aussi, je précise que le suivi des expéditions pourra se faire depuis la feuille « Sommaire » ou chaque numéro de suivi figurera dans la colonne A. On pourrait partir de là ou pas ? J’ai trouvé un exemple sur internet (cf fichier "message-erreur-...) mais je ne sais pas comment adapter le code, j’ai essayé mais il est trop complexe pour moi ^^ Alors si vous pouviez me donner un petit coup de pouce ça serait super !

Merci beaucoup pour votre aide en tout cas !

Bonne soirée

J-Baptiste

Bonjour,

Je reviens vers vous après un long moment !! J'ai voulu avancer sur mon projet mais là je séche. J'ai essayé tant bien que mal d'intégrer le code dans mon projet mais rien n'y fait ça ne fonctionne pas :/ Je n'arrive même plus à ouvrir la UserForm, je ne comprends pas ! Est-ce que quelqu'un aurait une piste...?

Merci à vous pour votre aide !

J-Baptiste

Bonjour toutes et tous

1/ dans ton userform il n'y a pas de feuille de ton classeur qui se nomme "NNI" tu as sans doute oublier de mettre Matricules* (sans oublier le s)* donc, ton userform ne peut s'initialiser correctement

Private Sub UserForm_initialize()
    mat = Range("Z5")
    Range("Z5") = ""
    With Sheets("NNI")   ' ?????? par Matricules non ???
        ln = .Range("A:A").Find(mat, lookat:=xlWhole).Row
        For j = 1 To 7
            Controls("TextBox_" & j) = .Cells(ln, j + 1).Value
        Next j
        End With

    With Sheets("Destinataires")
    ComboBox1.List.Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row).Value
    End With

End Sub

@ tester

Private Sub UserForm_initialize()
    mat = Range("Z5")
    Range("Z5") = ""
    With Sheets("Matricules")   ' <=============
        ln = .Range("A:A").Find(mat, lookat:=xlWhole).Row
        For j = 1 To 7
            Controls("TextBox_" & j) = .Cells(ln, j + 1).Value
        Next j
        End With

    With Sheets("Destinataires")
    ComboBox1.List.Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row).Value
    End With

End Sub

2/ le nom de tes textbox ne correspondent plus du tout si tu mets Textbox_1 , Textbox_2 , jusqu'à 7 puisque lors de l'initialisation de tes textbox tu signales 7 et là tu as des noms de textboxs differents pour cela que ton userform ne se lance pas

exemples de ce que tu as mis sur les noms de tes textboxs :

a) Designation_materiel_1 jusqu' à 5

b) N°serie_1 jusqu' à 5 j'ai un doute avec le signe degré vaut mieux mettre les noms de tes textbox comme ceci: N_serie_1(en utilisant l'undescore)

c) Quantite_1 jusqu' à 5

je te laisses regarder si les colonnes c'est ok

Private Sub UserForm_initialize()
    mat = Range("Z5")
    Range("Z5") = ""

With Sheets("Matricules")   ' <=============
        ln = .Range("A:A").Find(mat, lookat:=xlWhole).Row  ' regarder si les colonnes c'est ok
        For j = 1 To 7
            Controls("TextBox_" & j) = .Cells(ln, j + 1).Value
        Next j
      '  End With  à supprimer   re-éditer à 22:05

'exemple a)
ln1 = .Range("B:B").Find(mat, lookat:=xlWhole).Row          'regarder si la colonne correspond
        For k = 1 To 5
            Controls("Designation_materiel_" & k) = .Cells(ln1, k + 1).Value
        Next k
'exemple b)
ln2 = .Range("C:C").Find(mat, lookat:=xlWhole).Row           'regarder si la colonne correspond
        For l = 1 To 5
            Controls("N_serie_" & l) = .Cells(ln2, l + 1).Value
        Next l
'exemple c)
ln3 = .Range("D:D").Find(mat, lookat:=xlWhole).Row         'regarder si la colonne correspond
        For m = 1 To 5
            Controls("Quantite_" & m) = .Cells(ln3, m + 1).Value
        Next m
End With

    With Sheets("Destinataires")
    ComboBox1.List.Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row).Value  ' le nom de la combobox est incorrecte 
    End With

End Sub

3/ erreur sans doute aussi avec le nom de ta combobox de ton userform

Note: dans les exemples de ce forum mis par Sébastien, il y a aussi les déclarations des variables qui t'aideront énormément maintenant et par la suite

crdlt,

André

Bonsoir André,

Merci pour votre retour et votre analyse.

En fait, je suis au tout début de mon projet et je vais le développer au fur et à mesure. Pour commencer je voulais créer 2 types de "saisie automatique" pour les pavés "Expéditeur" et "Destinataire". Le matricule que l'on renseigne dans l'inputbox viendra renseigner automatiquement le pavé "Expéditeur" à partir des données de la feuilles "Matricules". Ensuite, pour le pavé "Destinataire" dans la Userform, je voulais une liste déroulante de toutes les sociétés depuis la combox1 qui viendra chercher le contenu dans la feuille "Destinataires". J'ai vérifié et corrigé tous les noms que j'ai donné au différents éléments et cela ne fonctionne pas. Impossible d'ouvrir la Userform "Nouvelle_Exp". Un bug d'Excel ?

Avez-vous des pistes ?

J-Baptiste

Re,

merci pour ton retour, je relirai plus tard une 2ème fois

il y avait aussi une erreur sur le nom d'une feuille sur une macro également

je te joins ce que j'ai effectué déjà mais, il y a des petites/moyennes erreurs encore et du taf restant

crdlt,

André

Merci André pour votre analyse. Effectivement il doit y avoir pas mal d'erreurs. Il va falloir que j'approfondisse tout ça. Par contre, je trouve étonnant que je ne puisse pas faire fonctionner une simple macro pour afficher ma UserForm comme :

Sub Afficher_UserForm
Nouvelle_Exp.Show
End Sub

Pourriez-vous essayer de votre côté, c'est peut-être mon excel qui bug...

Merci pour votre coopération ;)

J-Baptiste

Bonjour toutes et tous

@J-Baptiste : ce n'est pas un bug d'Excel

par contre, je ne comprend pas cela ci-dessous? dans la macro "Lancer_expedition" ou j'ai raté une étape

Range("Z5") = mat

----------

j'ai un peu avancé sur la feuille formulaire afin de faciliter fl'effacement de la feuille (Note il faudra éviter au max. de fusionnées des cellules car, Excel n'aime pas)

crdlt,

André

Bonjour André

Merci d'avoir pris le temps de regarder :) En fait ce code sert à stocker la valeur renseignée dans l'inputbox dans la cellule Z5. Cette valeur est ensuite utilisée pour renseigner automatiquement le pavé "Expéditeur" dans la UserForm "Nouvelle_Exp". C'est GMB qui avait proposé ce code et il fonctionnait pas mal dans son exemple ! Même tout le reste fonctionnait très bien sauf que je n'ai pas réussi à l'adapter à ma UserForm. J'aimerais juste pourvoir adapter son code à ma UserForm car c'est exactement l'utilisation dont j'avais besoin ! Je joins le fichier que GMB avait posté ça sera peut-être plus simple pour comprendre ce que je souhaite développer :)

Encore merci pour votre aide :)

J-Baptiste

32jb-v3.xlsm (130.32 Ko)
Rechercher des sujets similaires à "saisie automatique champs userform inputbox"