UserForm et multiplication de lignes

Bonjour à tous,

Je reçois des demandes de prestation que je dois intégrer dans un tableau. Le problème, c'est que je dois faire une ligne par process (qui commence toujours par une réception, et qui finit toujours par une expédition).

J'ai fait une UserForm pour tenter de ne faire qu'une tâche par prestation. J'y ai mis les informations qui ne changent pas, et toute la partie processus en dessous.

Plusieurs problématiques :

  • Je n'arrive pas à faire de listes déroulantes dans mes userforms ... (Je pars pas bien déjà ... )
  • J'aimerais que lorsque je lance la userform, le premier process soit la réception et le dernier l'expédition (tout en me laissant la possibilité de les enlever si jamais)
  • J'aimerais que lorsque je valide ma box, les infos se mettent sur autant de ligne qu'il y a d'étapes (donc dans mon exemple, seulement 4 lignes).
  • Petit bonus , j'aimerais que le numéro de ref en première colonne soit le numéro max de la colonne +1
    • Un truc du genre :
      • Set Tableau1 = Range("A3:A100000")
        Maxi = Application.WorksheetFunction.Max(Tableau1)
        ActiveCell = Maxi + 1

Je vous remercie vivement du temps que vous prendrez à la résolution de mes différentes problématiques !

Pour la liste tu peux utiliser une ListBox :

Private Sub UserForm_Initialize()

  Dim i As Integer
  Dim f As Worksheet
  Sheets("Nom de ta feuille").Select
  Set f = Worksheets("Nom de ta feuille")
  Set Rng = f.Range("B8:F" & f.[B65000].End(xlUp).Row - 1)' Cellules d'où proviennent tes données
  Me.Combobox1.ColumnHeads = True 'En-têtes
  Me.Combobox1.ColumnCount = 5 'Nombre de colonnes
  Me.Combobox1.ColumnWidths = "125;50;0;0;30" 'Largeur entre les colonnes
  Me.Combobox1.RowSource = Rng.Address 'Ajout de tes cellules sélectionnées plus haut dans la Listbox
end sub

Ce code provient d'une Listbox (Listbox1 à juste été transformer en Combobox1). Ca devrait quand même marcher.

2. Pas compris ce que tu voulais

3. Tes infos à mettre dans les cellules des lignes sont chacunes dans une listbox différente ? Si oui tu as juste à faire :

Sheets("XXXX").cells(X,Y).value= Userform1.Combobox1.value

tu le fais pour toutes les combobox ou alors tu fais une boucle avec For. Exemple :

For i = 1 to 10

Sheets("XXX").cells(1,i).value = userform1.combobox1.value

next i 

4. Ton petit code devrait fonctionné, tu as esssayé ?

Bonjour Arthur,

Merci pour ta réponse.

1. Je n'ai pas réussi à intégrer ton code dans ma userform mais je pense avoir trouvé une solution plus simple : J'ai nommé mes plages et je les ai directement intégrées dans la ligne RowSource de ma liste déroulante.

2. Comme je ne suis pas le seul à remplir ce fichier, je souhaitais insister sur l'importance de mettre une réception et une expédition. J'aurais donc aimé que ma première cellule soit déjà préremplie "RECEPTION" et que ma dernière soit préremplie "EXPEDITION". Si impossible, ce n'est pas grave, je ferai plus de prévention .

3. Dans l'exemple de mon fichier, j'ai rempli ma box comme j'aimerais le faire à l'avenir et dans le tableau, les 4 premières lignes correspondent à ce que j'aimerais obtenir à savoir :

  • autant de lignes que d'étapes avec numéro de ref à la suite
  • quand c'est une réception, une date de réception
  • quand c'est un autre process, une date de process
  • quand c'est une expédition, une date d'expédition
  • le reste des infos identiques aux autres lignes (station, quantité, espèce, etc.)

Avec le fichier à jour :

1. Oui c'est plus simple mais pas pratique si tes tailles de listes change.

2. Ah d'accord, et bien tu peux simplement mettre une TextBox au lieu d'une Combobox et en .Value tu mets EXPEDITION ou RECEPTION.

Ou carrément un Label comme ca pas de modification posible par des personnes.

3. essaye un peu de faire de ton côté je pense qu'il y a pas mal d'outil sur internet.
Essaye de marquer tes combobox dans des cellules c'est assez simple. avec ca :

Sheets("XXX").cells(2,2).value = userform1.combobox1.value

Pour le rendre dynamique tu peux revenir ici après

1. Sauf avec une formule du type =DECALER($A$2;0;0;NBVAL($A$2:$A$500);1) dans la référence de ta plage.

2. En fait, quand tu fais ta box avec RECEPTION et EXPEDITION préremplie, elle s'ouvrira avec déjà ces données remplies donc parfait !

3. J'ai essayé de le faire de mon côté avant de venir chercher de l'aide sur ce forum ... J'apprends tout juste à utiliser les userforms et je n'ai pas encore la chance de trouver ça "assez simple"

1. Ah oui je ne connaissais pas la formule

2. Donc tu as réussi là-dessus ou non ? Si non tu peux mettre dans userform_Initialize :

me.combobox.value = "RECEPTION" et un autre avec = "EXPEDITION"

3. Ah d'accord je pensais que tu n'avais rien fait de ton côté. Mais pourquoi il n'y a rien comme macro dans ton classeur ?
Ca peut toujours servir pour t'expliquer et adapter le code.
Envoie ce que tu as fais et j'essaye un truc ce soir. Là je suis au boulot donc pas trop le temps de m'y mettre sérieusement.

3. Parce que je ne peux pas envoyer mon vrai fichier de travail, donc j'ai fait un tableau "simplifié" pour juste comprendre comment le faire ensuite.

Je te joins le fichier à jour avec la macro que j'avais déjà travaillé et adaptée à mon exemple.

Actuellement, j'arrive à mettre la première ligne de presta mais dès que j'ai d'autres étapes, je ne sais pas comment les mettre à la suite automatiquement ... Je cherche en gros à faire une boucle sur les 6 boxs de process, ajouter la ligne quand il y a quelque chose, passer à la box suivante quand elle est vite et clore la userform quand c'est fini mais sur ça, je bloque ... (la réponse est surement bête, mais j'ai trop le nez dedans et je n'arrive plus à prendre de la hauteur).

Ok oui je comprend et c'est une bonne idée le fichier anonyme mais avec la progression que tu as c'est mieux.

Je regarde tout ca ce soir

Voila l'Excel avec la macro qui complète ton tableau. Dis moi si il manque des choses.

Toute la macro est une répétition des mêmes choses. C'est vraiment moche mais je n'ai pas réussi avec un For/Next et ComboBox(i)

Je ne sais pas pourquoi...

Sinon tout est marqué dans les macro pour comprendre comment ca marche.

Bonjour Arthur,

Merci beaucoup pour ton aide.

Tout ne fonctionne pas mais ça me donne tous les éléments nécessaire pour finir ma macro !

Ah mince dis moi ce qui ne fonctionne pas.

Sinon fais de ton côté, c'est comme ca qu'on apprend le mieux.

mais bon... désolé que ca ne fonctionne pas, je suis un peu déçu pour une première vraie participation.

Courage pour la suite

@ plus

Pour info,

Les quantités ne se mettent pas sur aucune des lignes et il y a un problème sur les dates de process qui ne se mettent pas non plus. Mais c'est pas grave, j'avais trouvé une façon de le faire de mon côté !

Merci encore !

bizarre ca marchait parfaitement de mon coté hier... C'est peut être l'export de ce fichier vers le votre qui n'as pas fonctionner.

Bizarre je regarderais ca.

Pensez à faire des boucles si l'envie vous en prends, le code sera beaucoup plus joli et lisible

De rien si je vous ai aidé.

Rechercher des sujets similaires à "userform multiplication lignes"