Hello Lio,
Je viens juste de faire ça.
Pour parvenir à placer les bonnes données aux bons endroits,
- un tableau des adresses des cellules à renseigner.
- les textbox, combos et listbox ont, dans leur nom un index identifiable, de telle manière que cet index corresponde à l'index du tableau des adresses des cellules.
Enfin, afin de placer chaque fiche (correspondant à une saisie et/ou sélection dans l'userform) sur une nouvelle ligne, une variable NoLigne initialisée à l'ouverture de l'userform sur la 1ère ligne vide de la BdD, NoLigne incrémentée à chaque nouvelle validation des données.
Enfin, pour placer les données dans la feuille aux bons endroits, une boucle
1 2 3 4 5 6 7 8 9 10
| For each LeControl in Userform1.controls
if instr(LeControl.name, "_")<>0 then
'ici, si on a "_txt" dans le nom, c'est un textbox
'l'index est donné par le nombre formaté à deux chiffres qui suit "_txt"("_txt01", "_txt05"... etc)
'traitement du textbox, où 01 ou 05 correspond à l'index du tableau d'adresse
elseif 'si on a "_lst", c'est une listbox ou un combo qu'on traite comme tels
'ici encore, l'index de l'adresse est donné pr le nombre formaté à deux chiffres qui suit "_lst" ("_lst06", "_lst09"... etc
'traitement de la liste où 06 correspond... etc
endif
Next |
Cela te permet de traiter à la fois les listes et les textbox.
La solution du tableau d'adresses pourrait te permettre de régler également ton problème pour le fichier que tu as baptisé "fusion", pb auquel je n'ai pas eu le tps de te répondre
Une dernière chose : pour ton tableau d'adresses, utilises cette forme
LesAdresses = Array(Cells(1, 2), Cells(2, 2), Cells(3, 2), Cells(1, 5), Cells(2, 5), ...)
Et pour affecter les valeurs de tes contrôles à ces adresses
1 2 3 4
| Range(LesAdresses(Lindex).address = LeControl.value
'ou
Range(LesAdresses(Lindex).address = LeControl.List(LeCombo.listindex)
'selon que tu as un txtbox ou une liste |
Bon courage
Partager