Alimenter un formulaire (textboxn) à partir d'une feuille contenant une ligne

G

Geoffroy

Guest
Bonjour,

J'aimerai Alimenter mon formulaire à partir d'une feuille excel contenant des informations sur la première ligne (et non l'inverse).

Exemple: Feuill1
5;5;6;7;4;...etc... sur la ligne 1.

Code VBA:

Dim Mabox

Load frm1 (nom de formulaire)

For i = 0 To 5 ' de la colonne 0 à la colonne 5
j = i + 1
Mabox = "frm1.TextBox" & j 'Nom de la textbox correspondant à la valeur
Mabox = Worksheets("infrastructure").Range("A1").Offset(0, i).Value
Next
frm1.Show

Merci d'avance, ci-dessus cela ne fonctionne pas. Pas de message d'erreur.
 
Z

ZON

Guest
Salut Geoffroy et le forum,

Si je comprends bien tu veux alimenter 5 textbox à partir de de la ligne 1 de la colonne B à F, pas besoin de boucle : dans l'initialize mets ceci

textbox1=Worksheets("infrastructure").Range("B1")
textbox2=Worksheets("infrastructure").Range("C1")
...

textbox5=Worksheets("infrastructure").Range("F1")


sinon reviens avec un exemple zippé ou plus d'explications.

A+++
 
G

Geoffroy

Guest
Merci de m'avoir répondu ZON, mais en fait j'ai besoin de récupérer 64 valeurs et non 5. (5 c t à titre d'exemple)
En fait mes valeurs sont disposées sur la premières ligne et sur 64 colonnes. (De A1 à BL)
J'ai aussi 64 textbox de créés de Textbox1 à TextBox64.

Donc j'essaye de faire une boucle qui récupère le contenu le la cellule (n) dans la textBox (n) quelque soit la valeur de la cellule.

Exemple: textbox1=Worksheets("infrastructure").Range("A1")
textbox(n)=Worksheets("infrastructure").Range("A1").Offset(0, n).Value
Mais je vais pas m'amuser à taper les 64 textbox, donc je voyais un intérêt dans une boucle.


Dois déclarer la variable Mabox As TextBox ?? ou autre chose ?

Je ne peux mettre le fichier à dispo car il dépasse 50ko meme compressé.

Merci pour tout, et encore merci ZON et le forum.
 
G

Geoffroy

Guest
Et bien après adaptation, cela ne fonctionne toujours pas. J'ai une erreur d'execution 13 (type incompatible) sur la ligne :

for each C in Me.controls

Mon Adaptation :

Sachant que mon USF se nomme frm1:

Dim C As msforms.TextBox
Dim I As Byte

I = 1 ' à adapter
Load frm1
For Each C In frm1.Controls
C = TextBox1 = Worksheets("infrastructure").Cells(1, I): I = I + 1
Next C


Merci quand meme, j'ai finalement ecris les 64 lignes en code, c'est un peu barbarre mais je n'ai que de très peu de temps devant moi.


Mille Merci. A+
 
Z

ZON

Guest
Re,

désolé Geoffroy de t'avoir fait perdre du temps, j'aurais du me relire il y a textbox1 qui a rien à faire, du coup j'ai testé cette fois , c'est ok chez moi, il faut remplacer

C = TextBox1 = Worksheets("infrastructure").Cells(1, I): I = I + 1 par C=Worksheets("infrastructure").Cells(1, I): I = I + 1

A+++
 
G

Geoffroy

Guest
Salut ZON,

Merci pour la soluce, mais j'ai trouvé ceci : (je le donne pour info pour tout le monde )

1) alimenter un feuille excel à partir de plusieurs textbox sur une ligne de la feuill1 :

Code suivant à mettre dans le code du UserForm :

For Each Mabox In Controls
If Left(Mabox.Name, 7) = "TextBox" Then
I = Right(Mabox.Name, Len(Mabox.Name) - 7)
Worksheets("Feuill1").Range("A1").Offset(ligne, I - 1) = Mabox
End If
Next

Exemple:
La feuille 1 contiendra : 1|2|3|4....etc....N pour TextBox(N)

2) alimenter plusieurs textbox à partir de la feuill1 sur la ligne 1 :

Code suivant à mettre dans le code du UserForm :

For Each Mabox In Controls
If Left(Mabox.Name, 7) = "TextBox" Then
I = Right(Mabox.Name, Len(Mabox.Name) - 7)
Mabox.Value = Worksheets("infrastructure").Range("A1").Offset(ligne, I - 1).Value
End If
Next

Attention: les TextBox doivent avoir le meme nom :
exemple: TotoBox1, TotoBox2, TotoBox3 ...etc...TotoBox(N)

Je n'ai pas eu le temps de tester ta solution, mais je te remercie grandement pour ton aide et merci au forum.
 

Discussions similaires

Réponses
4
Affichages
355

Statistiques des forums

Discussions
314 085
Messages
2 105 631
Membres
109 402
dernier inscrit
dalilouille