Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/10/2011, 08h52   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 33
Points : 10
Points : 10
Par défaut Créer une boucle avec une condition

Bonjour à tous, je suis coincé :
Je chercher à rendre ludique un énorme tableau d'excel en plusieurs pages de formulaire (userform). Dans un premier temps, on sélectionne dans une combobox un code particulier (la clé d'entrée pour chaque ligne différente). Ensuite, je voudrais que toutes mes textbox se remplissent automatiquement selon le code (la clé) choisi. Rien de compliqué c'est juste une condition, mais si je sais le faire pour une textbox, je ne sais pas le faire avec une boucle.
Aussi ma structure de tableau est simple.
- Textbox1 = colone 1
- textbox2 = colone 2
- jusqu'a 33.

Quelqu'un de gentil m'avait aider sur ce même sujet mais je bloque
voici mon code, je ne sais pas où est l'erreur. les textbox se remplissent mais pas correctement.

Merci de votre aide

--
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Private Sub CommandButton1_Click()
Dim c As Range
Dim Code As String
 
'Code: le contenu de TextBox1 qu'on va chercher sur la colonne A
Code = Recherche.ComboBox1.Value
'Si Code est non vide
If Code <> "" Then
'F1 sur la méthode Find (on cherche la valeur de Code dans la colonne A de notre feuille)
'c est la cellule de la colonne A contenant éventuellement la valeur du Code
    Set c = Worksheets("bdouvrages").Range("A:A").Find(Code, LookIn:=xlValues, lookat:=xlWhole)
    'Si une cellule est trouvé (contenant la valeur de Code) c sera différente de rien
    If Not c Is Nothing Then
        'On appelle la procédure de remplissage Remp des TextBox de Fiche en fonction de la ligne de la cellule trouvé (c.Row)
        Call Report(c.Row)
        'On vide notre variable objet (Range) c
        Set c = Nothing
    End If
End If
End Sub
 
'Procédure de remplissage des TextBox de Fiche en fonction de (Lig)ne
Private Sub Report(ByVal Lig As Long)
Dim i As Byte
 
With Worksheets("bdouvrages")
    FIO.TextBox1.Value = .Cells(Lig, 1).Value
    FIO.TextBox2.Value = .Cells(Lig, 2).Value
    'On boucle sur les textbox de 3 à 33
    'on remarque que le textbox d'index j est rempli par la contenu de la cellule Cells(Lig,j+2)
    For i = 3 To 33
        FIO.Controls("TextBox" & i).Value = .Cells(Lig, i + 2)
    Next i
End With
 
'pour montrer la fiche
FIO.Show
 
End Sub
kaboche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 09h36   #2
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour,

Citation:
Aussi ma structure de tableau est simple.
- Textbox1 = colone 1
- textbox2 = colone 2
- jusqu'a 33.
Pas tout à fait, puisque ton code indique

Code :
1
2
3
4
5
'On boucle sur les textbox de 3 à 33
 'On remarque que le textbox d'index i est rempli par la contenu de la cellule Cells(Lig,i+2)
For i = 3 To 9
FIO.Controls("TextBox" & i).Value = .Cells(Lig, i + 2)
Next i
Donc,
- Textbox3 = colone 5
- Textbox4 = colone 6
- Etc.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/10/2011, 09h55   #3
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 33
Points : 10
Points : 10
ok merci je ne trouvais pas l'erreur etant novice en VBA.
Merci et le problème est réglé. Mais je pense que je vais bientôt revenir car compliqué de faire des graphiques sous VBA.
A bientot
kaboche est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h31.


 
 
 
 
Partenaires

Hébergement Web