XL 2010 Simplification de code "range" avec beaucoup de TextBox (50)

BUG

XLDnaute Junior
Bonsoir à tous,

Pourriez vous me dire (et comment ) est il possible de simplifier ce code ( jusqu' a 50 )?
.Range("E" & L) = TextBoxCh1.Value
.Range("D" & L) = TextBoxCh2.Value
.Range("F" & L) = TextBoxCh3.Value
.Range("G" & L) = TextBoxCh4.Value
.Range("H" & L) = TextBoxCh5.Value
.Range("I" & L) = TextBoxCh6.Value..
........................
.Range("AX" & L) = TextBoxCh50.Value
Merci pour votre aide.
 

Phil69970

XLDnaute Barbatruc
Bonjour @BUG

Pour info ton énoncé est faux
.Range("E" & L) = TextBoxCh1.Value
.Range("D" & L) = TextBoxCh2.Value
.Range("F" & L) = TextBoxCh3.Value
.Range("G" & L) = TextBoxCh4.Value
.Range("H" & L) = TextBoxCh5.Value
.Range("I" & L) = TextBoxCh6.Value..
........................
.Range("AX" & L) = TextBoxCh50.Value
1649372537100.png


Je te propose un peu beaucoup à l'aveugle car j'ai pas vu ton fichier !!

VB:
L = 2 ' <== A adapter le N° de la ligne
For i = 1 To 50
    Worksheets("Ma feuille").Cells(L, i) = Me("TextBoxCh" & i).Value ' <== nom de la feuille à adapter
Next i

*Merci de ton retour

@Phil69970
 
Dernière édition:

Jacky67

XLDnaute Barbatruc
Bonsoir à tous,

Pourriez vous me dire (et comment ) est il possible de simplifier ce code ( jusqu' a 50 )?
.Range("E" & L) = TextBoxCh1.Value
.Range("D" & L) = TextBoxCh2.Value
.Range("F" & L) = TextBoxCh3.Value
.Range("G" & L) = TextBoxCh4.Value
.Range("H" & L) = TextBoxCh5.Value
.Range("I" & L) = TextBoxCh6.Value..
........................
.Range("AX" & L) = TextBoxCh50.Value
Merci pour votre aide.
Bonjour,
De " .Range("E" & L" à ".Range("AX" & L) " il n'y a que 46 colonnes
donc la suite logique ne peut pas donner==>TextBoxCh50
C'est faisable avec une boucle, mais la première cellule doit correspondre avec le 1 de ==> TextBoxCh1.Value,
Ce qui a la vue de l'exemple n'est pas le cas
.Range("E" & L) = TextBoxCh1.Value
.Range("D" & L) = TextBoxCh2.Value
.Range("F" & L) = TextBoxCh3.Value
A lieu de
.Range("D" & L) = TextBoxCh1.Value
.Range("E" & L) = TextBoxCh2.Value
.Range("F" & L) = TextBoxCh3.Value

Et avec un classeur exemple ce serait bien mieux
 

BUG

XLDnaute Junior
je te remercie Phil , Bonsoir Chti
Vive les réunions... c est toujours extra super mais..😁

du coup il fallait bien battre un record , je passe à 62 textbox !!
les 45 premières sont bien adressées , les autres non.
les 2 premières listbox "ListRondier " et ListBox1 , ont est obligé de cliquer dedans pour valider la saisie.
et enfin lorsque que l 'opérateur fait une saisie , si il tape sur la touche entrée , on passe de façon aléatoire
à une autre listBox au lieu de passer à la suivante .. bien trop compliqué tout ça pour moi
je remets mon fichier complet.
si vous pouviez ...:(
 

Pièces jointes

  • essai prise compteurs 2022.VERSION 6.xlsm
    237.8 KB · Affichages: 4

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Lorsque que l'opérateur fait une saisie, s'il tape sur la touche entrée, on passe de façon aléatoire à une autre TextBox au lieu de passer à la suivante... Bien trop compliqué tout ça pour moi.
Ce n'est pas aléatoire, ça dépend de la valeur de TabIndex : ça se déplace du TabIndex le plus petit au TabIndex le plus grand.

Si tu renumérotes les TabIndex de toutes les TextBox d'une Frame, tu verras que le [Tab] ou le [Entrée] ira bien à la TextBox "suivante". ;)

Et c'est bien sûr pareil au niveau supérieur pour les Frames.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
bonjour à tous
juste comme ça en passant
dans le tag de tes textboxs met la /les lettres de tes colonnes correspondantes
et tu fait un truc du genre

VB:
for each ctrl in me.controls
 if ctrl.tag<>"" then .cells(L,ctrl.tag).value=ctrl.value
next
attention si il y a des dates !!!!!

VB:
for each ctrl in me.controls
   if ctrl.tag<>"" then
     if isdate(ctrl.value) then
       .cells(L,ctrl.tag).value=datevalue(ctrl.value)
     else
     .cells(L,ctrl.tag).value=ctrl.value
     end if
   end if
next

il va de soi que pour réduire la boucle et si tout tes textboxs sont dans la même frame on boucle alors sur les controls de la frame uniquement
exemple
VB:
for each ctrl in me.Frame1.controls
   if ctrl.tag<>"" then
     if isdate(ctrl.value) then
       .cells(L,ctrl.tag).value=datevalue(ctrl.value)
     else
     .cells(L,ctrl.tag).value=ctrl.value
     end if
   end if
next

tu n'aura pas de soucis d'ordre;)
@+
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Bonjour à tous

Perso j'ai pris cette méthode que je trouve pratique :

Clic droit sur une frame et je fais monter ou descendre mes textbox ou je veux ;)

1649489682247.png


si tout tes textboxs sont dans la même frame on boucle alors sur les controls de la frame uniquement

*Et non Patrick il y a 8 ou 9 frames... et les textbox sont disséminés partout 🤣

@Phil69970
 

Statistiques des forums

Discussions
312 299
Messages
2 086 991
Membres
103 422
dernier inscrit
victus5