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

probleme de boucle sur un userform

5 réponses
Avatar
Deedooz
Bonsoir,

Voici mon probleme : je souhaite rendre ces lignes de codes moins indigestes
en créant une boucle.

Mon userform vérifie les valeurs des cellules B5, G5, L5,... (toutes les 5
colonnes) et les assigne ensuite
à ses Label4, Label5, Label6, ...

faire un range avec une variable pour la ligne du type Range("B" & i) je
connais, mais je n'y arrive pas avec la colonne.
Je n'arrive pas non plus a boucler avec l'objet Label d'un formulaire

info : tous ces Labels font partie d'une même frame appelée frm_Saisie

Merci d'avance

*************Mon code tout pourri :

Feuil30.Activate

If Feuil30.Range("B5") > 0 Then
Label4.Caption = Feuil30.Range("B5").Value
Else
End If

If Feuil30.Range("G5") > 0 Then
Label5.Caption = Feuil30.Range("G5").Value
Else
End If

If Feuil30.Range("L5") > 0 Then
Label6.Caption = Feuil30.Range("L5").Value
Else
End If

If Feuil30.Range("Q5") > 0 Then
Label7.Caption = Feuil30.Range("Q5").Value
Else
End If

If Feuil30.Range("V5") > 0 Then
Label8.Caption = Feuil30.Range("V5").Value
Else
End If

If Feuil30.Range("AA5") > 0 Then
Label9.Caption = Feuil30.Range("AA5").Value
Else
End If

If Feuil30.Range("AF5") > 0 Then
Label10.Caption = Feuil30.Range("AF5").Value
Else
End If

5 réponses

Avatar
Nicolas B.
Salut,

Pour la sélection de la cellule, utilise Cells(Ligne, Colonne) à la
place de Range. La colonne à spécifier est alors sous la forme d'un entier.

Et pour les labels, tu peux parcourir les objets de ta UserForm, et pour
ceux dont le nom commence par "Label", leur affecter la valeur d'une
cellule :

Private Sub UserForm_Initialize()
Dim c As Control
Dim i As Integer
For Each c In Me.Controls
If Left(c.Name, 5) = "Label" Then
i = Mid(c.Name, 6)
c.Caption = ActiveSheet.Cells(5, 2 + 5 * (i - 1)).Value
End If
Next
End Sub


A+
Nicolas B.

Bonsoir,

Voici mon probleme : je souhaite rendre ces lignes de codes moins indigestes
en créant une boucle.

Mon userform vérifie les valeurs des cellules B5, G5, L5,... (toutes les 5
colonnes) et les assigne ensuite
à ses Label4, Label5, Label6, ...

faire un range avec une variable pour la ligne du type Range("B" & i) je
connais, mais je n'y arrive pas avec la colonne.
Je n'arrive pas non plus a boucler avec l'objet Label d'un formulaire

info : tous ces Labels font partie d'une même frame appelée frm_Saisie

Merci d'avance

*************Mon code tout pourri :

Feuil30.Activate

If Feuil30.Range("B5") > 0 Then
Label4.Caption = Feuil30.Range("B5").Value
Else
End If

If Feuil30.Range("G5") > 0 Then
Label5.Caption = Feuil30.Range("G5").Value
Else
End If

If Feuil30.Range("L5") > 0 Then
Label6.Caption = Feuil30.Range("L5").Value
Else
End If

If Feuil30.Range("Q5") > 0 Then
Label7.Caption = Feuil30.Range("Q5").Value
Else
End If

If Feuil30.Range("V5") > 0 Then
Label8.Caption = Feuil30.Range("V5").Value
Else
End If

If Feuil30.Range("AA5") > 0 Then
Label9.Caption = Feuil30.Range("AA5").Value
Else
End If

If Feuil30.Range("AF5") > 0 Then
Label10.Caption = Feuil30.Range("AF5").Value
Else
End If




Avatar
michdenis
Bonjour Deedooz,

Tu pourrais aussi utiliser quelque chose comme ceci :

'--------------------
Dim A as integer, b as integer
a = 2
With Worksheets("Feuil30")
For b = 1 To 7
Controls("Label" & 4 + b).Caption = .Cells(5, a)
a = a + 5
Next
End With
'--------------------


Salutations!



"Deedooz" a écrit dans le message de news:
Bonsoir,

Voici mon probleme : je souhaite rendre ces lignes de codes moins indigestes
en créant une boucle.

Mon userform vérifie les valeurs des cellules B5, G5, L5,... (toutes les 5
colonnes) et les assigne ensuite
à ses Label4, Label5, Label6, ...

faire un range avec une variable pour la ligne du type Range("B" & i) je
connais, mais je n'y arrive pas avec la colonne.
Je n'arrive pas non plus a boucler avec l'objet Label d'un formulaire

info : tous ces Labels font partie d'une même frame appelée frm_Saisie

Merci d'avance

*************Mon code tout pourri :

Feuil30.Activate

If Feuil30.Range("B5") > 0 Then
Label4.Caption = Feuil30.Range("B5").Value
Else
End If

If Feuil30.Range("G5") > 0 Then
Label5.Caption = Feuil30.Range("G5").Value
Else
End If

If Feuil30.Range("L5") > 0 Then
Label6.Caption = Feuil30.Range("L5").Value
Else
End If

If Feuil30.Range("Q5") > 0 Then
Label7.Caption = Feuil30.Range("Q5").Value
Else
End If

If Feuil30.Range("V5") > 0 Then
Label8.Caption = Feuil30.Range("V5").Value
Else
End If

If Feuil30.Range("AA5") > 0 Then
Label9.Caption = Feuil30.Range("AA5").Value
Else
End If

If Feuil30.Range("AF5") > 0 Then
Label10.Caption = Feuil30.Range("AF5").Value
Else
End If
Avatar
Deedooz
Merci Nicolas B et michdenis pour vos réponses : les 2 solutions
fonctionnent effectivement

Cependant je ne comprend pas tres bien la syntaxe de cette ligne que tu as
utilisée Nicolas :
c.Caption = ActiveSheet.Cells(5, 2 + 5 * (i - 1)).Value

Le Cells(5,2 +5*(i-1)).Value reste obscure à mes yeux.... pourrais tu m'en
dire un peu plus ?


"Deedooz" a écrit dans le message de
news:
Bonsoir,

Voici mon probleme : je souhaite rendre ces lignes de codes moins
indigestes

en créant une boucle.

Mon userform vérifie les valeurs des cellules B5, G5, L5,... (toutes les 5
colonnes) et les assigne ensuite
à ses Label4, Label5, Label6, ...

faire un range avec une variable pour la ligne du type Range("B" & i) je
connais, mais je n'y arrive pas avec la colonne.
Je n'arrive pas non plus a boucler avec l'objet Label d'un formulaire

info : tous ces Labels font partie d'une même frame appelée frm_Saisie

Merci d'avance

*************Mon code tout pourri :

Feuil30.Activate

If Feuil30.Range("B5") > 0 Then
Label4.Caption = Feuil30.Range("B5").Value
Else
End If

If Feuil30.Range("G5") > 0 Then
Label5.Caption = Feuil30.Range("G5").Value
Else
End If

If Feuil30.Range("L5") > 0 Then
Label6.Caption = Feuil30.Range("L5").Value
Else
End If

If Feuil30.Range("Q5") > 0 Then
Label7.Caption = Feuil30.Range("Q5").Value
Else
End If

If Feuil30.Range("V5") > 0 Then
Label8.Caption = Feuil30.Range("V5").Value
Else
End If

If Feuil30.Range("AA5") > 0 Then
Label9.Caption = Feuil30.Range("AA5").Value
Else
End If

If Feuil30.Range("AF5") > 0 Then
Label10.Caption = Feuil30.Range("AF5").Value
Else
End If




Avatar
Nicolas B.
Le but est de chercher les valeurs des cellules B5, G5, L5...,
c'est-à-dire des valeurs dans les colonnes 2, 7, 13...
Tes labels sont numérotés de 1 en 1, et le numéro du label est indiqué
dans la variable i.

La formule 2 + 5 * (i - 1) renvoie la colonne dans laquelle il faut
aller chercher la valeur : 2 pour la colonne B (la première concernée),
5 pour l'écart entre les colonnes qu'il faut multiplier par i-1 (-1, car
les labels sont indexés à partir de 1, et pas de 0).

Comme les valeurs sont toutes à aller chercher en ligne 5, la formule
renvoyant la valeur voulue est :
ActiveSheet.Cells(5, 2 + 5 * (i - 1)).Value


A+
Nicolas B.

Merci Nicolas B et michdenis pour vos réponses : les 2 solutions
fonctionnent effectivement

Cependant je ne comprend pas tres bien la syntaxe de cette ligne que tu as
utilisée Nicolas :
c.Caption = ActiveSheet.Cells(5, 2 + 5 * (i - 1)).Value

Le Cells(5,2 +5*(i-1)).Value reste obscure à mes yeux.... pourrais tu m'en
dire un peu plus ?




Avatar
Deedooz
Merci pour tes eclaircissement, je comprend mieux :)

"Nicolas B." a écrit dans le message
de news:%
Le but est de chercher les valeurs des cellules B5, G5, L5...,
c'est-à-dire des valeurs dans les colonnes 2, 7, 13...
Tes labels sont numérotés de 1 en 1, et le numéro du label est indiqué
dans la variable i.

La formule 2 + 5 * (i - 1) renvoie la colonne dans laquelle il faut
aller chercher la valeur : 2 pour la colonne B (la première concernée),
5 pour l'écart entre les colonnes qu'il faut multiplier par i-1 (-1, car
les labels sont indexés à partir de 1, et pas de 0).

Comme les valeurs sont toutes à aller chercher en ligne 5, la formule
renvoyant la valeur voulue est :
ActiveSheet.Cells(5, 2 + 5 * (i - 1)).Value


A+
Nicolas B.

Merci Nicolas B et michdenis pour vos réponses : les 2 solutions
fonctionnent effectivement

Cependant je ne comprend pas tres bien la syntaxe de cette ligne que tu
as


utilisée Nicolas :
c.Caption = ActiveSheet.Cells(5, 2 + 5 * (i - 1)).Value

Le Cells(5,2 +5*(i-1)).Value reste obscure à mes yeux.... pourrais tu
m'en


dire un peu plus ?