Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

nom d'un userform

8 réponses
Avatar
RV
Bonjour,
J'ai 2 userforms qui ont des données communes stockées sur une feuille de
calcul.
J'ai créé une macro qui suivant le userform affiché va chercher ces données.
Ce qui ne fonctionne pas c'est l'affectation du nom du userform à la
variable H.
Je vous joins le code ci dessous:

Sub Feuille_Proc()

On Error Resume Next

F = "Proc" & Sheets("Contrôle").Cells(1, 256).Value
H = Sheets("Contrôle").Cells(1, 255).Value

Windows(2).Activate

With H
t = 7
For u = 1 To 7
.Controls("Bleu" & u).Caption = Sheets(F).Cells(t, 1).Value
t = t + 3
Next

v = 6: w = 31

For X = 1 To 4
v = v + 1
For Y = 1 To 7
w = w + 1
.Controls("L" & Y & "C" & X).Caption = Sheets(F).Cells(w,
v).Value
Next Y
Next X
End With

Windows(2).Activate

End Sub

Merci et bonne soirée
Cordialement
RV

8 réponses

Avatar
Daniel
Bonjour.
Je ne sais pas si cela peux fonctionner, mais tel que tu l'écris, H est une
variable string et non pas une variable objet.
Cordialement.
Daniel
"RV" a écrit dans le message de news:

Bonjour,
J'ai 2 userforms qui ont des données communes stockées sur une feuille de
calcul.
J'ai créé une macro qui suivant le userform affiché va chercher ces
données.
Ce qui ne fonctionne pas c'est l'affectation du nom du userform à la
variable H.
Je vous joins le code ci dessous:

Sub Feuille_Proc()

On Error Resume Next

F = "Proc" & Sheets("Contrôle").Cells(1, 256).Value
H = Sheets("Contrôle").Cells(1, 255).Value

Windows(2).Activate

With H
t = 7
For u = 1 To 7
.Controls("Bleu" & u).Caption = Sheets(F).Cells(t, 1).Value
t = t + 3
Next

v = 6: w = 31

For X = 1 To 4
v = v + 1
For Y = 1 To 7
w = w + 1
.Controls("L" & Y & "C" & X).Caption = Sheets(F).Cells(w,
v).Value
Next Y
Next X
End With

Windows(2).Activate

End Sub

Merci et bonne soirée
Cordialement
RV



Avatar
anonymousA
Bonjour,


2 solution possibles :

1-utiliser la structure du userform pour modifier en dur les captions
des controles

Set H =
ThisWorkbook.VBProject.VBComponents("Sheets("Contrôle").Cells(1,
255).Value")

t = 7
For u = 1 To 7
H.designer.Controls("Bleu" & u).Caption = Sheets(F).Cells(t,
1).Value
t = t + 3
Next

H.Show

2-Charger tous les userforms possibles mais sans les afficher puis
parcourir la collection
exemple avec 2 userforms appelés toto et tata et dans la cellule A1 le
nom toto est marqué

Load toto
Load tata
For Each uf In VBA.UserForms
If uf.Name = Cells(1, 1).Value Then Set uffound = uf: Exit For
Next

Alors dans ce cas uffound est l'objet Userform appelé toto puis on
referme les autres userforms en utilisant unload par un parcours de la
collection des userforms ouverts.Dans ce cas, la modification des
controles du userform ne sera que temporaire.

A+


RV wrote:
Bonjour,
J'ai 2 userforms qui ont des données communes stockées sur une feuill e de
calcul.
J'ai créé une macro qui suivant le userform affiché va chercher ces données.
Ce qui ne fonctionne pas c'est l'affectation du nom du userform à la
variable H.
Je vous joins le code ci dessous:

Sub Feuille_Proc()

On Error Resume Next

F = "Proc" & Sheets("Contrôle").Cells(1, 256).Value
H = Sheets("Contrôle").Cells(1, 255).Value

Windows(2).Activate

With H
t = 7
For u = 1 To 7
.Controls("Bleu" & u).Caption = Sheets(F).Cells(t, 1).Value
t = t + 3
Next

v = 6: w = 31

For X = 1 To 4
v = v + 1
For Y = 1 To 7
w = w + 1
.Controls("L" & Y & "C" & X).Caption = Sheets(F).Cells(w,
v).Value
Next Y
Next X
End With

Windows(2).Activate

End Sub

Merci et bonne soirée
Cordialement
RV


Avatar
anonymousA
H.show est à enlever dans la 1ere solution.Pb de copier-coller

A+

anonymousA wrote:
Bonjour,


2 solution possibles :

1-utiliser la structure du userform pour modifier en dur les captions
des controles

Set H =
ThisWorkbook.VBProject.VBComponents("Sheets("Contrôle").Cells(1,
255).Value")

t = 7
For u = 1 To 7
H.designer.Controls("Bleu" & u).Caption = Sheets(F).Cells(t,
1).Value
t = t + 3
Next

H.Show

2-Charger tous les userforms possibles mais sans les afficher puis
parcourir la collection
exemple avec 2 userforms appelés toto et tata et dans la cellule A1 le
nom toto est marqué

Load toto
Load tata
For Each uf In VBA.UserForms
If uf.Name = Cells(1, 1).Value Then Set uffound = uf: Exit For
Next

Alors dans ce cas uffound est l'objet Userform appelé toto puis on
referme les autres userforms en utilisant unload par un parcours de la
collection des userforms ouverts.Dans ce cas, la modification des
controles du userform ne sera que temporaire.

A+


RV wrote:
Bonjour,
J'ai 2 userforms qui ont des données communes stockées sur une feui lle de
calcul.
J'ai créé une macro qui suivant le userform affiché va chercher c es données.
Ce qui ne fonctionne pas c'est l'affectation du nom du userform à la
variable H.
Je vous joins le code ci dessous:

Sub Feuille_Proc()

On Error Resume Next

F = "Proc" & Sheets("Contrôle").Cells(1, 256).Value
H = Sheets("Contrôle").Cells(1, 255).Value

Windows(2).Activate

With H
t = 7
For u = 1 To 7
.Controls("Bleu" & u).Caption = Sheets(F).Cells(t, 1).Value
t = t + 3
Next

v = 6: w = 31

For X = 1 To 4
v = v + 1
For Y = 1 To 7
w = w + 1
.Controls("L" & Y & "C" & X).Caption = Sheets(F).Cells(w,
v).Value
Next Y
Next X
End With

Windows(2).Activate

End Sub

Merci et bonne soirée
Cordialement
RV




Avatar
RV
Bonsoir Daniel,
Que puis-je faire pour que cela fonctionne ?
Merci
Cordialement
RV


"Daniel" a écrit dans le message de news:

Bonjour.
Je ne sais pas si cela peux fonctionner, mais tel que tu l'écris, H est
une variable string et non pas une variable objet.
Cordialement.
Daniel
"RV" a écrit dans le message de news:

Bonjour,
J'ai 2 userforms qui ont des données communes stockées sur une feuille de
calcul.
J'ai créé une macro qui suivant le userform affiché va chercher ces
données.
Ce qui ne fonctionne pas c'est l'affectation du nom du userform à la
variable H.
Je vous joins le code ci dessous:

Sub Feuille_Proc()

On Error Resume Next

F = "Proc" & Sheets("Contrôle").Cells(1, 256).Value
H = Sheets("Contrôle").Cells(1, 255).Value

Windows(2).Activate

With H
t = 7
For u = 1 To 7
.Controls("Bleu" & u).Caption = Sheets(F).Cells(t, 1).Value
t = t + 3
Next

v = 6: w = 31

For X = 1 To 4
v = v + 1
For Y = 1 To 7
w = w + 1
.Controls("L" & Y & "C" & X).Caption = Sheets(F).Cells(w,
v).Value
Next Y
Next X
End With

Windows(2).Activate

End Sub

Merci et bonne soirée
Cordialement
RV







Avatar
anonymousA
Essaye ce que je t'ai envoyé.

A+

Bonsoir Daniel,
Que puis-je faire pour que cela fonctionne ?
Merci
Cordialement
RV


"Daniel" a écrit dans le message de news:

Bonjour.
Je ne sais pas si cela peux fonctionner, mais tel que tu l'écris, H est
une variable string et non pas une variable objet.
Cordialement.
Daniel
"RV" a écrit dans le message de news:

Bonjour,
J'ai 2 userforms qui ont des données communes stockées sur une feuille de
calcul.
J'ai créé une macro qui suivant le userform affiché va chercher ces
données.
Ce qui ne fonctionne pas c'est l'affectation du nom du userform à la
variable H.
Je vous joins le code ci dessous:

Sub Feuille_Proc()

On Error Resume Next

F = "Proc" & Sheets("Contrôle").Cells(1, 256).Value
H = Sheets("Contrôle").Cells(1, 255).Value

Windows(2).Activate

With H
t = 7
For u = 1 To 7
.Controls("Bleu" & u).Caption = Sheets(F).Cells(t, 1).Value
t = t + 3
Next

v = 6: w = 31

For X = 1 To 4
v = v + 1
For Y = 1 To 7
w = w + 1
.Controls("L" & Y & "C" & X).Caption = Sheets(F).Cells(w,
v).Value
Next Y
Next X
End With

Windows(2).Activate

End Sub

Merci et bonne soirée
Cordialement
RV










Avatar
Daniel
Essaie ça :

For Each uf In UserForms
If uf.Name = [A1] Then
Set H = uf
With H
'*** ton code
End With
End If
Next

Daniel
"anonymousA" a écrit dans le message de news:
447f3020$0$1338$
Essaye ce que je t'ai envoyé.

A+

Bonsoir Daniel,
Que puis-je faire pour que cela fonctionne ?
Merci
Cordialement
RV


"Daniel" a écrit dans le message de news:

Bonjour.
Je ne sais pas si cela peux fonctionner, mais tel que tu l'écris, H est
une variable string et non pas une variable objet.
Cordialement.
Daniel
"RV" a écrit dans le message de news:

Bonjour,
J'ai 2 userforms qui ont des données communes stockées sur une feuille
de calcul.
J'ai créé une macro qui suivant le userform affiché va chercher ces
données.
Ce qui ne fonctionne pas c'est l'affectation du nom du userform à la
variable H.
Je vous joins le code ci dessous:

Sub Feuille_Proc()

On Error Resume Next

F = "Proc" & Sheets("Contrôle").Cells(1, 256).Value
H = Sheets("Contrôle").Cells(1, 255).Value

Windows(2).Activate

With H
t = 7
For u = 1 To 7
.Controls("Bleu" & u).Caption = Sheets(F).Cells(t, 1).Value
t = t + 3
Next

v = 6: w = 31

For X = 1 To 4
v = v + 1
For Y = 1 To 7
w = w + 1
.Controls("L" & Y & "C" & X).Caption = Sheets(F).Cells(w,
v).Value
Next Y
Next X
End With

Windows(2).Activate

End Sub

Merci et bonne soirée
Cordialement
RV











Avatar
RV
Re-bonsoir Daniel,
Je vais essayer demain sur mon mon lieu professionnel.
Merci encore et bonne soirée.
RV


"Daniel" a écrit dans le message de news:
%23%
Essaie ça :

For Each uf In UserForms
If uf.Name = [A1] Then
Set H = uf
With H
'*** ton code
End With
End If
Next

Daniel
"anonymousA" a écrit dans le message de news:
447f3020$0$1338$
Essaye ce que je t'ai envoyé.

A+

Bonsoir Daniel,
Que puis-je faire pour que cela fonctionne ?
Merci
Cordialement
RV


"Daniel" a écrit dans le message de news:

Bonjour.
Je ne sais pas si cela peux fonctionner, mais tel que tu l'écris, H est
une variable string et non pas une variable objet.
Cordialement.
Daniel
"RV" a écrit dans le message de news:

Bonjour,
J'ai 2 userforms qui ont des données communes stockées sur une feuille
de calcul.
J'ai créé une macro qui suivant le userform affiché va chercher ces
données.
Ce qui ne fonctionne pas c'est l'affectation du nom du userform à la
variable H.
Je vous joins le code ci dessous:

Sub Feuille_Proc()

On Error Resume Next

F = "Proc" & Sheets("Contrôle").Cells(1, 256).Value
H = Sheets("Contrôle").Cells(1, 255).Value

Windows(2).Activate

With H
t = 7
For u = 1 To 7
.Controls("Bleu" & u).Caption = Sheets(F).Cells(t, 1).Value
t = t + 3
Next

v = 6: w = 31

For X = 1 To 4
v = v + 1
For Y = 1 To 7
w = w + 1
.Controls("L" & Y & "C" & X).Caption = Sheets(F).Cells(w,
v).Value
Next Y
Next X
End With

Windows(2).Activate

End Sub

Merci et bonne soirée
Cordialement
RV














Avatar
RV
Bonjour anonymousA,
Je devais être fatigué car je t'ai répondu sur boite perso et je m'en
excuse.
Bonne journée
RV

"anonymousA" a écrit dans le message de news:

H.show est à enlever dans la 1ere solution.Pb de copier-coller

A+

anonymousA wrote:
Bonjour,


2 solution possibles :

1-utiliser la structure du userform pour modifier en dur les captions
des controles

Set H > ThisWorkbook.VBProject.VBComponents("Sheets("Contrôle").Cells(1,
255).Value")

t = 7
For u = 1 To 7
H.designer.Controls("Bleu" & u).Caption = Sheets(F).Cells(t,
1).Value
t = t + 3
Next

H.Show

2-Charger tous les userforms possibles mais sans les afficher puis
parcourir la collection
exemple avec 2 userforms appelés toto et tata et dans la cellule A1 le
nom toto est marqué

Load toto
Load tata
For Each uf In VBA.UserForms
If uf.Name = Cells(1, 1).Value Then Set uffound = uf: Exit For
Next

Alors dans ce cas uffound est l'objet Userform appelé toto puis on
referme les autres userforms en utilisant unload par un parcours de la
collection des userforms ouverts.Dans ce cas, la modification des
controles du userform ne sera que temporaire.

A+


RV wrote:
Bonjour,
J'ai 2 userforms qui ont des données communes stockées sur une feuille
de
calcul.
J'ai créé une macro qui suivant le userform affiché va chercher ces
données.
Ce qui ne fonctionne pas c'est l'affectation du nom du userform à la
variable H.
Je vous joins le code ci dessous:

Sub Feuille_Proc()

On Error Resume Next

F = "Proc" & Sheets("Contrôle").Cells(1, 256).Value
H = Sheets("Contrôle").Cells(1, 255).Value

Windows(2).Activate

With H
t = 7
For u = 1 To 7
.Controls("Bleu" & u).Caption = Sheets(F).Cells(t, 1).Value
t = t + 3
Next

v = 6: w = 31

For X = 1 To 4
v = v + 1
For Y = 1 To 7
w = w + 1
.Controls("L" & Y & "C" & X).Caption = Sheets(F).Cells(w,
v).Value
Next Y
Next X
End With

Windows(2).Activate

End Sub

Merci et bonne soirée
Cordialement
RV