Syntaxe pour boucle for

silvin38

XLDnaute Nouveau
Bonjour,

J'ai fait une macro qui fonctionne tout à fait, mais je pense que la syntaxe utilisée et bien lourde.

Code:
Worksheets("Belts (2012)").Activate ' Active la feuille Belts (2012)
   
    
    projet = TextBox1.Value         'Définit les valeurs de mes combobox
    membre1 = CB1.Value
    membre2 = CB2.Value
    membre3 = CB3.Value
        
    On Error Resume Next
      
    If membre1 <> "" Then   'Test si membre1 a été renseigné
        x1 = [C10:C500].Find(what:=membre1, LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByColumns).Address
        Range(x1).Offset(0, 5).Select
            ActiveCell.Value = ActiveCell.Value & Chr(10) & "membre" & " " & projet     'rajoute le projet à dans la liste des projets de la personne sélectionnée
        Range(x1).Offset(0, 4).Select
            ActiveCell.Value = ActiveCell.Value & "x"                                   'rajoute une croix dans la colonne "membre" de la personne sélectionnée
    End If
    
    If membre2 <> "" Then   'Test si membre2 a été renseigné
        x2 = [C10:C500].Find(what:=membre2, LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByColumns).Address
        Range(x2).Offset(0, 5).Select
            ActiveCell.Value = ActiveCell.Value & Chr(10) & "membre" & " " & projet
        Range(x2).Offset(0, 4).Select
            ActiveCell.Value = ActiveCell.Value & "x"
    End If
    
    If membre3 <> "" Then
        x3 = [C10:C500].Find(what:=membre3, LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByColumns).Address
        Range(x3).Offset(0, 5).Select
            ActiveCell.Value = ActiveCell.Value & Chr(10) & "membre" & " " & projet
        Range(x3).Offset(0, 4).Select
            ActiveCell.Value = ActiveCell.Value & "x"
    End If
    
    Unload UserForm1

En fait pour cette maro, toutes mes combobox ont la même source et j'utilise un userform pour selectionner plusieurs membres faisant partie d'un nouveau projet.
Donc dans le userform j'ai une textbox pour le nom du projet et plusieurs combobox pour renseigner les membres participant au projet.
Mon code actuel sert a rajouter du texte dans les projets déjà affecté au membre selectionné dans la combobox,
et à rajouter "x" dans une colonne où je mets des croix pour chaque projets auquel le membre a participé.

Alors pour avoir une macro qui tourne mieux j'aimerais utiliser une boucle for dans le code suivant, mais je bloque sur la syntaxe.
Comment définir membre1, membre2.. et CB1, CB2.. pour pouvoir faire une boucle for du type
for i = 1 to 3 (dans l'exmple plus haut)


Merci d'avance
 

VDAVID

XLDnaute Impliqué
Re : Syntaxe pour boucle for

Bonjour Silvin38,

Code:
Worksheets("Belts (2012)").Activate ' Active la feuille Belts (2012)
   
    Dim i As Integer
    projet = TextBox1.Value         'Définit les valeurs de mes combobox

        
    On Error Resume Next
      
For i = 1 To 3 
Membre = Me.Object("CB" & i).Value
    If membre <> "" Then   'Test si membre1 a été renseigné
        x1 = [C10:C500].Find(what:=membre, LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByColumns).Address
        Range(x1).Offset(0, 5).Select
            ActiveCell.Value = ActiveCell.Value & Chr(10) & "membre" & " " & projet     'rajoute le projet à dans la liste des projets de la personne sélectionnée
        Range(x1).Offset(0, 4).Select
            ActiveCell.Value = ActiveCell.Value & "x"                                   'rajoute une croix dans la colonne "membre" de la personne sélectionnée
    End If
Next i 
Unload Userform1
End Sub

A tester,
Sinon peut-être mettre un petit fichier exemple sans données confidentielles :)


Bonne journée
 

silvin38

XLDnaute Nouveau
Re : Syntaxe pour boucle for

Merci j'ai testé mais cela ne fonctionne pas à priori,
Il me renvoie : "Erreur de compilation. Membre de méthode ou de données introuvable" sur le .Object

Ci joint un fichier exemple :
 

Pièces jointes

  • Test_Membres.xls
    59.5 KB · Affichages: 47

Statistiques des forums

Discussions
312 239
Messages
2 086 495
Membres
103 234
dernier inscrit
matteo75654548