Probleme de remplissage d'un tableau via un userform
Bonjour
Je suis actuellement en train de faire un petit programme en VBA afin de gérer un stock qui permet de savoir qui prend quoi et pour quel endroit. J'ai donc créer mon userform (formulaire_identification) avec différents Labels(NOM, Date, site concerné, et une dizaine de produits) et les champs sont sous forme de liste déroulante avec un bouton "Valider" et "Annuler"
Le problème c'est que lorsque je rempli tous les champs et que je clique Valider, le tableau (qui se trouve sur la feuille "SUIVI") se rempli a partir du bas et remonte alors que je souhaite simplement qu'a chaque clique sur Valider le tableau se rempli a partir de A2 sur toute la ligne jusqu'à L2 et descend a la prochaine ligne pour une prochaine entrée. Je souhaiterais trouver mon erreur
J'espère avoir été suffisamment clair étant novice dans la programmation.
Je joins la partie du code que j'ai écris et que je ne trouve pas l'erreur.
Private Sub Valider_Click()
Dim i As Integer
Dim ctrl As Control
Dim Colonne As Integer
Dim derligne As Integer
derligne = Sheets("SUIVI").Range("A65000").End(xlUp).Row + 1
For Each ctrl In formulaire_identification.Controls
Colonne = Val(ctrl.Tag)
If Colonne > 0 Then Sheets("SUIVI").Cells(derligne, Colonne) = ctrl
Next
End
End Sub
Je vous remercie d'avance de prendre le temps de lire mon message
Cordialement
Leo_ajay
Bonsoir Léo, bonsoir le forum,
C'est impossible avec ce code !?... Si la définition de derligne se trouvait dans la boucle For... Each, peut-être. Mais là, non.
Bonsoir
Tout d'abord, je vous remercie pour votre retour.
Je viens de mettre derligne = Sheets("SUIVI").Range("A65000").End(xlUp).Row + 1 a l'intérieur de la boucle mais le problème c'est que chaque information de chaque colonne se met dans la partie basse du tableau avec un décalage de 1 entre les colonnes(sorte d'escaliers). Si mon code est faux, je vous serez gré de me donner qq conseils car ce programme doit être opérationnel pour Vendredi et il ne me manque que le remplissage du tableau de haut en bas.
Encore merci
Bonsoir Léo, bonsoir le forum,
Je me suis mal exprimé ! En fait ce qui est impossible c'est que, ce que tu décris arrive, avec ton code qui est absolument juste. Ça aurait pu arriver si derligne avait été dans la boucle. Mais il ne faut absolument pas le mettre dans la boucle...
Ton code est bon mais sans le fichier qui va avec impossible de comprendre ce qui ne va pas...
re bonsoir Thauthème.
Je comprend mieux votre dernier message. Je me permet de joindre a ce message tout mon programme en esperant ne pas trop prendre de votre temps.
Private Sub Annuler_Click()
formulaire_identification.Hide
End Sub
Private Sub Valider_Click()
Dim i As Integer
Dim ctrl As Control
Dim Colonne As Integer
Dim derligne As Integer
derligne = Sheets("SUIVI").Range("A65000").End(xlUp).Row + 1
For Each ctrl In formulaire_identification.Controls
Colonne = Val(ctrl.Tag)
If Colonne > 0 Then Sheets("SUIVI").Cells(derligne, Colonne) = ctrl
Next
End
End Sub
Private Sub nbPochettesbrassards_Change()
End Sub
Private Sub UserForm_initialize()
With ComboBox3
Me!ComboBox3 = Format(Now, "dd/mm/yyyy")
End With
With Site_concerne
.AddItem "PC1"
.AddItem "Accueil PC1"
.AddItem "PC2"
.AddItem "Accueil PC2"
.AddItem "PC3"
.AddItem "Accueil PC3"
.AddItem "PC4"
.AddItem "Accueil PC4"
End With
With NOM
.AddItem " Damien"
.AddItem " Alexandre"
.AddItem " Christophe"
.AddItem " Baptiste"
.AddItem " Antoine"
.AddItem "WANG Lionel"
.AddItem " Akiln"
.AddItem " Ahmed"
.AddItem " Edwin"
.AddItem "Gilles"
.AddItem "Laurent"
.AddItem " Irvin"
.AddItem " Chakir"
.AddItem "Julien"
.AddItem " Elie"
.AddItem " Thierry"
.AddItem " Nicolas"
.AddItem " Marc"
.AddItem "Andrew"
.AddItem "Stephane"
.AddItem "Leo"
End With
With nbDATACARD_visiteurs
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
End With
With nbDATACARD_gunnebo
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
End With
With nbkit_black
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
End With
With nbkit_color
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
End With
With nbPochettes_souples
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
End With
With nbPochettes_brassards
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
End With
With nbPochettes_rigides
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
End With
With nbAccroches_bdg_pince
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
End With
With nbAccroches_bdg_zip
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
End With
End Sub
Je vous remercie d'avance car cela fait plusieurs jours que je sèche et j'aurai aimé réussir ce premier programme en VBA
Bien a vous
Leo
Bonsoir Léo, bonsoir le forum,
Le code seul de sert à rien ! C'est le fichier ou un fichier exemple basé sur ton original qu'il aurait fallu. Mais comme visiblement tu as la flemme je me suis décarcassé pour toi (c'est rare mais ça arrive).
En pièce jointe un fichier exemple où tu verras que ton code fonctionne correctement. Je l'ai remanié quelques peu :
• pour faciliter l'alimentation dynamique des comboboxes ou listboxes en utilisant un onglet contenant les données. Pour ajouter/modifier/supprimer une ou plusieurs données, c'est dans l'onglet Listes que ça se passe. Pas besoin de réécrire le code en dur !...
• Pour terminer l'action d'une UserForm, il ne faut jamais* utiliser Hide qui ne fait que la masquer mais Unload qui la ferme et la décharge de la mémoire. L'avantage c'est que quand tu l'ouvres à nouveau avec Show, elle est vierge... En plus ça t'évite le End radical !
* Sauf si tu dois réutiliser les données plus tard où là, le Hide peut-ête utile.
• Pourquoi une ComboBox pour la date ? Une Textbox est plus que suffisante...
Le fichier de M. Ducros :
Bonjour Thautheme
Je te remercie de ton aide qui m'est tres précieuse . Néanmoins, juste une précision, de mon côté ce n'est pas une question de flemme, au vu du temps que j'ai passé à écrire ce programme qui peut paraître rempli d'erreur mais au combien précieux pour moi. Je pensais sincèrement que le code suffirait, je le saurais maintenant. De mon côté aussi j'accorde pas mal de temps à aider les autres dans mon domaine. Je ne comprend pas encore les bases de ce langage mais j'ai déjà commencé à my mettre. Un grand merci en tout cas pour le temps que tu m'as accordé et les explications.
A bientôt