Plusieurs FOR à la suite

Résolu
VDB57 -  
 VDB57 -
Bonjour,

A la retraite je me suis mis en tête de faire quelques petits outils en VBA.
Encore une fois j'ai besoin de votre aide.Ci dessous mon problème: Mon premier For ligne =1 to 24 fonctionne très bien, par contre les 3 suivants restent sans réponse.

Merci pour votre aide et mes excuses aux internautes restés sans réponse. Des ennuis familiaux m'ont empêchés d'ouvrir mon ordi.



Dim Ligne As Integer

For Ligne = 1 To 24
Me.Controls("CommandButton" & Ligne).Caption = "" & Sheets("caisse").Cells(Ligne + 1, 9)

Next Ligne

For Ligne = 25 To 28
Me.Controls("CommandButton" & Ligne).Caption = "" & Sheets("caisse").Cells(Ligne + 1, 10)

Next Ligne

For Ligne = 29 To 32
Me.Controls("CommandButton" & Ligne).Caption = "" & Sheets("caisse").Cells(Ligne + 1, 10)

Next Ligne
For Ligne = 33 To 36
Me.Controls("CommandButton" & Ligne).Caption = "" & Sheets("caisse").Cells(Ligne + 1, 10)

Next Ligne

End Sub


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

7 réponses

NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
Pourquoi avoir scindé ta boucle en 4 parties ?
Pourquoi tu change la case ? (9 pour la première boucle, 10 pour les 3 suivantes ?
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonjour le fil, bonjour le forum,

Comme NHenry, pas tout compris !...
Essaie comme ça :

Sub Macro3()
Dim Ligne As Integer

For Ligne = 1 To 36
    Select Case Ligne
        Case 1 To 24
            Me.Controls("CommandButton" & Ligne).Caption = Sheets("caisse").Cells(Ligne + 1, 9)
        Case 25 To 36
            Me.Controls("CommandButton" & Ligne).Caption = Sheets("caisse").Cells(Ligne + 1, 10)
    End Select
Next Ligne
End Sub

0
VDB57
 
Bonjour Thau Therme,

Comme je l'ai déjà je suis plus que mauvais dans le domaine et mes explications sont peu explicites.

En clair j'ai un userform avec 36 buttons .
Les buttons 1 à 24 doivent récupérer les données (texte) des cellules de ma colonne 9.les butons 25 à 28 les données des cellules de ma colonne 10. Les buttons 29 à 32 les données de ma colonne 11 et les buttons 33 à 36 celles de ma colonne 12.

Je me suis permis de modifier ta macro mais il n'y a que les buttons 1 à 24 qui prennent le nom des cellules de la colonne 9 (G)
Dim Ligne As Integer

For Ligne = 1 To 36
Select Case Ligne
Case 1 To 24
Me.Controls("CommandButton" & Ligne).Caption = Sheets("caisse").Cells(Ligne + 1, 9)
Case 25 To 28
Me.Controls("CommandButton" & Ligne).Caption = Sheets("caisse").Cells(Ligne + 1, 10)
Case 29 To 32
Me.Controls("CommandButton" & Ligne).Caption = Sheets("caisse").Cells(Ligne + 1, 11)
Case 33 To 36
Me.Controls("CommandButton" & Ligne).Caption = Sheets("caisse").Cells(Ligne + 1, 12)

End Select
Next Ligne
End Sub

Encore merci pour ton aide
0
VDB57
 
Ma colonne 9 correspond à la lettre I et non à G comme dit précédemment.
Il n'y a pas que mes articulations qui fonctionnent mal, mon cerveau est également rouillé!
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonjour VDB,

Le code fonctionne je te le garantis mais as-tu vérifié le contenu des cellules de l'onglet caisse ?

J'ai fait l'effort, que tu aurais dû faire toi-même, de reproduire ton problème. Il faut que tu prennes cette habitude de joindre un fichier si tu espères une réponse rapide. Nous ne serons pas toujours aussi complaisants...
Il y a deux version. La v01 correspond à ton code et tu verras qu'elle fonctionne.
La v02 correspond peut-être à ce que tu as dans ton fichier...

Pour joindre une fichier regarde du coté de www.cjoint.com ou tant d'autres...

https://www.cjoint.com/c/FFmmX2IWinR
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
VDB57
 
Loin de moi de vouloir abusé de votre gentillesse.Avant de me permettre de faire appel à vous je galère longtemps avec le peu de connaissance que j'ai.
Bien sûr que j'ai vérifier que mes cellules étaient remplies. PAR CONTRE SEULES LES 10 PREMIERES CELLULES DE MES COLONNES 10,11,12
LE SONT. JE PENSAI A TORT QUE LES BUTTONS DE CHAQUE CASE, RECUPERERAIENT LES DONNEES EN COMMANCANT PAR LA CELLULE N°2 DE CHAQUE COLONNE.

Merci
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Re,

Tu n'abuses pas mais tu ne fais toujours l'effort d'un fichier en pièce jointe... As-tu regarder la version 02 du fichier que je t'ai proposé ?
0
VDB57 > ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention  
 
Je ne sais comment te remercier.

C'est exactement ce que je recherchais.

A presque 70 ans on n'est plus tout à fait au top.

Merci pour ta patiente
0
Utilisateur anonyme
 
Bonjour VDB57,

Voici ce que j'ai trouvé de plus simple (avant ton message #6) :


Option Explicit

Sub Macro1()
  Dim lig As Byte, col As Byte, k As Integer
  For lig = 1 To 36
    k = Int((lig - 21) / 4): col = 9 - k * (k > 0)
    Me.Controls("CommandButton" & lig).Caption = Sheets("caisse").Cells(lig + 1, col)
  Next lig
End Sub


Cordialement.  😊
 


Si OK : clic en haut de page sur « Marquer comme résolu » ; merci !
0
VDB57
 
Bonjour albkan,

Thau Therm,vient de me donner la réponse, je garde également la tienne.


Merci pour votre implication et Bonne Journée.
0