Boucle FOR imbriquées

boudha74

XLDnaute Nouveau
Bonjour à tous,

j'ai besoin d'aide sur l'imbrixation de 2 boucles qui ne fonctionne pas.

Code:
Private Sub ComboBox_MAGASIN_Change()
'&&&&&&&&&&&&&&&&&   INITIALISE LES DONNEES DANS LA COMBOBOX &&&&&&&&&&&&&&&&&&&&

Dim u As Integer
For u = 2 To 7

Dim lettre As Variant
For t = 0 To 5
lettre = Array("A", "B", "C", "D", "E", "F")
t = lettre(t)

Me.Controls("Txt_Config_ETATCIVIL" & u).Value = Sheets("Config").Range(t & ComboBox_MAGASIN.ListIndex + 6).Value

Next
Next
End Sub

Merci de votre aide
 

pierrejean

XLDnaute Barbatruc
Re : Boucle FOR imbriquées

bonjour boudha

teste ceci

Code:
Private Sub ComboBox_MAGASIN_Change()
'&&&&&&&&&&&&&&&&&   INITIALISE LES DONNEES DANS LA COMBOBOX &&&&&&&&&&&&&&&&&&&&
Dim u As Integer
Dim lettres As Variant
lettres = Array("A", "B", "C", "D", "E", "F")
For u = 2 To 7
  For t = 0 To 5
    lettre = lettres(t)
    Me.Controls("Txt_Config_ETATCIVIL" & u).Value = Sheets("Config").Range(lettres & ComboBox_MAGASIN.ListIndex + 6).Value
  Next
Next
End Sub
 

boudha74

XLDnaute Nouveau
Re : Boucle FOR imbriquées

Bonjour PierreJean,

merci pour ta reponse eclair, malheureusement cela ne fonctionne pas' "erreur d incompatibilité de type 13".

Ci dessous le code qui fonctionne et que je veux transformer en boucle pour que tu comprennes mieux. Peut être je fais erreur des le début.

Code:
Txt_Config_ETATCIVIL2.Value = Sheets("COnfig").Range("A" & ComboBox_MAGASIN.ListIndex + 6).Value
Txt_Config_ETATCIVIL3.Value = Sheets("COnfig").Range("B" & ComboBox_MAGASIN.ListIndex + 6).Value Txt_Config_ETATCIVIL4.Value = Sheets("COnfig").Range("C" & ComboBox_MAGASIN.ListIndex + 6).Value
Txt_Config_ETATCIVIL5.Value = Sheets("COnfig").Range("D" & ComboBox_MAGASIN.ListIndex + 6).Value
Txt_Config_ETATCIVIL6 = Sheets("COnfig").Range("E" & ComboBox_MAGASIN.ListIndex + 6).Value
Txt_Config_ETATCIVIL7.Value = Sheets("COnfig").Range("F" & ComboBox_MAGASIN.ListIndex + 6).Value

merci pour ton aide
 

Orodreth

XLDnaute Impliqué
Re : Boucle FOR imbriquées

Bonjour,

Je me trompe peut-être, mais il m'a l'air possible de ne manipuler qu'une seule boucle.

Quelque chose comme ça:
Code:
    Dim t as integer
    Dim Ligne_Index as long
    Ligne_Index = ComboBox_MAGASIN.ListIndex + 6
    For t = 1 to 6
        Me.Controls("Txt_Config_ETATCIVIL" & cstr(t + 1)).Text = Sheets("Config").cells(Ligne_Index, t).Value
    Next t

A tester, mais ça devrait marcher (juste un vague doute sur le Me.Controls, je m'en suis déjà servi, mais ça remonte à loin).

Pas sûr de mon coup pour le Me.Controls.

Donc autre solution, avec une boucle sur les controles du formulaire:
Code:
    Dim t as integer
    Dim Ligne_Index as long
    Ligne_Index = ComboBox_MAGASIN.ListIndex + 6
    
    Dim o_Control As Control
    For t = 1 to 6
        For each o_Control in Me.Controls
            if o_Control.Name = "Txt_Config_ETATCIVIL" & cstr(t+1) Then
                o_Control.Text = Sheets("Config").cells(Ligne_Index, t).Value
                Exit For
            end if
        Next o_Control
    Next t

Cordialement,
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Boucle FOR imbriquées

Re

Comme il eut été pratique d'avoir une copie exemple pour tester !!!

Un autre essai:

Code:
Private Sub ComboBox_MAGASIN_Change()
'&&&&&&&&&&&&&&&&&   INITIALISE LES DONNEES DANS LA COMBOBOX &&&&&&&&&&&&&&&&&&&&
Dim u As Integer
Dim lettres As Variant
lettres = Array("A", "B", "C", "D", "E", "F")
For u = 2 To 7
  lettre = lettres(u - 2)
  Me.Controls("Txt_Config_ETATCIVIL" & u).Value = Sheets("Config").Range(lettre & ComboBox_MAGASIN.ListIndex + 6).Value
Next
End Sub
 

Discussions similaires

Réponses
11
Affichages
352
Réponses
29
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 020
dernier inscrit
Mzghal