IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Créer une boucle avec une condition


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Points : 25
    Points
    25
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Points : 25
    Points
    25
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Créer n variable avec une boucle
    Par persé dans le forum Général Java
    Réponses: 5
    Dernier message: 17/04/2013, 18h28
  3. [PHP 5.3] Créer un array avec une boucle
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 27/03/2013, 20h37
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Réponses: 4
    Dernier message: 15/10/2009, 13h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo