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 :

[E-03] Executer une boucle For Next dans une autre feuille que celle du UserForm


Sujet :

Macros et VBA Excel

  1. #1
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut [E-03] Executer une boucle For Next dans une autre feuille que celle du UserForm
    J'ai une question.

    Je lance ce code d'une feuille, mais les données à partir desquels j'execute ma boucle for next ne se trouve pas dans la même feuille. Comment je peut faire?

    J'ai essayé le code suivant mais sa bloque sur

    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
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
      Dim bon As Boolean
      Dim DerniereLigne As Integer
      Dim PremiereLigne As Integer
     
      Me.ComboBox1.Clear
      DerniereLigne = Worksheets("Feuil1").Range("A2").End(xlDown).Row
      PremiereLigne = Worksheets("Feuil1").Range("A2")
     
      For i = PremiereLigne To DerniereLigne
        If Cells(i, 1) = TextBox1.Text Then
          ComboBox1.AddItem Cells(i, 2)
          bon = True
        End If
      Next
      If Not bon Then
          MsgBox "La valeur saisie est incorrecte pour ce champ"
          Exit Sub
      Else
          ComboBox1.ListIndex = 0
      End If
     End Sub
    Mais sa bloque sur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PremiereLigne = Worksheets("Feuil1").Range("A2")
    Qu'est ce qui ne va pas?

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Tu peux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PremiereLigne = Worksheets("Feuil1").Range("A2").row
    Ou Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  3. #3
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    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
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
      Dim bon As Boolean
      Dim DerniereLigne As Integer
      Dim PremiereLigne As Integer
     
      Me.ComboBox1.Clear
      DerniereLigne = Worksheets("Feuil1").Range("A2").End(xlDown).Row
      PremiereLigne = Worksheets("Feuil1").Range("A2").Row
     
      For i = PremiereLigne To DerniereLigne
        If Cells(i, 1) = TextBox1.Text Then
          ComboBox1.AddItem Cells(i, 2)
          bon = True
        End If
      Next
      If Not bon Then
          MsgBox "La valeur saisie est incorrecte pour ce champ"
          Exit Sub
      Else
          ComboBox1.ListIndex = 0
      End If
     End Sub
    Ce que je ne comprends pas c'est que sa ne beug plus, mais même si je tappe les bonnes valeurs par exemple "A1" sa va ma mettre valeur incorrecte pour ce champ.

    Alors que si j'execute le UserForm dans la même feuille que où sont les données sa fonctionne nikel. Je ne vois pas d'où sa peut venir.

    Je met mon fichier en pièce jointe pour ceux qui ne comprendrais pas tout.

    Pour ceux qui nous rejoingne, ce que je veux faire c'est en tapant un code dans une textBox, afficher son équivalent dans une comboBox.

    Si j'execute mon USerForm sur la feuille ou je pioche mes données sa fonctionne (Feuil1) et si j'execute mon UserForm depuis une autre feuille (Feuil2) sa ne fonctionne pas. Voila mon souci.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Salut moilou2,

    c'est normal que cela ne focntionne pas car les 2 lignes suivantes te ramène juste un numéro de ligne (un integer si tu veux) mais rien d'autre et ne te positionnent en rien sur une feuille différente de la feuille active.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      DerniereLigne = Worksheets("Feuil1").Range("A2").End(xlDown).Row
      PremiereLigne = Worksheets("Feuil1").Range("A2").Row
    Donc tu parcours la feuille active avec les limites de la feuille 1.

    Change la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        If Cells(i, 1) = TextBox1.Text Then
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        If Sheets("Feuil1").Cells(i, 1) = TextBox1.Text Then
    et tu devrais voir la différence.

    J'espère que tu auras compris.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  5. #5
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Re et merci, je crois avoir compris, mais sa ne fonctionne pas. Enfin je n'ai plus le message qui s'affiche mais je n'ai rien non plus qui se met dans ma combobox;

    Voila ce que j'ai mis, je pense que c'est ce que tu m'a indiqué:

    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
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
      Dim bon As Boolean
      Dim DerniereLigne As Integer
      Dim PremiereLigne As Integer
     
      Me.ComboBox1.Clear
      DerniereLigne = Worksheets("Feuil1").Range("A2").End(xlDown).Row
      PremiereLigne = Worksheets("Feuil1").Range("A2").Row
     
      For i = PremiereLigne To DerniereLigne
        If Sheets("Feuil1").Cells(i, 1) = TextBox1.Text Then
          ComboBox1.AddItem Cells(i, 2)
          bon = True
        End If
      Next
      If Not bon Then
          MsgBox "La valeur saisie est incorrecte pour ce champ"
          Exit Sub
      Else
          ComboBox1.ListIndex = 0
      End If
     End Sub

  6. #6
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    J'ai trouvé merci beaucoup.

    En fait il fallait aussi indiqué que c'était la "feuil1" dans la ligne de code en dessous comme suit:

    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
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
      Dim bon As Boolean
      Dim DerniereLigne As Integer
      Dim PremiereLigne As Integer
     
      Me.ComboBox1.Clear
      DerniereLigne = Worksheets("Feuil1").Range("A2").End(xlDown).Row
      PremiereLigne = Worksheets("Feuil1").Range("A2").Row
     
      For i = PremiereLigne To DerniereLigne
        If Sheets("Feuil1").Cells(i, 1) = TextBox1.Text Then
          ComboBox1.AddItem Sheets("Feuil1").Cells(i, 2)
          bon = True
        End If
      Next
      If Not bon Then
          MsgBox "La valeur saisie est incorrecte pour ce champ"
          Exit Sub
      Else
          ComboBox1.ListIndex = 0
      End If
     End Sub
    Merci pour tout

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

Discussions similaires

  1. [XL-2007] Problème dans une boucle For..Next
    Par robby98800 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/06/2012, 07h48
  2. Chercher dans les valeurs d'une cellule dans une boucle For Next
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 28/09/2011, 15h30
  3. optimiser une boucle while imbriquer dans une boucle for
    Par bakaratoun dans le forum MATLAB
    Réponses: 0
    Dernier message: 28/01/2010, 15h35
  4. Executer un boucle "for next" dans le sens décroissant
    Par caroletexier dans le forum ASP
    Réponses: 1
    Dernier message: 19/11/2008, 11h29
  5. Réponses: 3
    Dernier message: 06/07/2004, 10h21

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