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 :

Message d'erreur pour 2 boucles "For...next" imbriquées. [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 126
    Points : 69
    Points
    69
    Par défaut Message d'erreur pour 2 boucles "For...next" imbriquées.
    Bonjour,
    J'ai un petit soucis en vba avec 2 boucles for.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For i = 1 To TextBox1
     
        For j = 3 To dernierevaleur
            If Range("A" & j).Value <> ListBox2.List(ListBox2.ListIndex) Then
                Next j
            Else
                Range("F" & j).Value = 1
                Next i
            End If
    TextBox 1 et ListBox1 sont des données d'une UserForm.

    Il m'est impossible de compiler et me sors comme message d'erreur :
    Impossible de compiler: Next sans for et me met en gras la ligne Next j

    Savez vous d'où viens le problème ?

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Je n'ai pas testé, mais ça devrait être quelque chose comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    For i = 1 To TextBox1
     
        For j = 3 To dernierevaleur
            If Range("A" & j).Value = ListBox2.List(ListBox2.ListIndex) Then
                Range("F" & j).Value = 1
                j=dernierevaleur
            end if
         Next j
     
    Next i
    Jérôme

  3. #3
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 126
    Points : 69
    Points
    69
    Par défaut
    RE,
    ça marche déjà bcp mieux.
    Merci bcp.

    ça ne fait pas encore ce que j'attend mais en tout cas il n'y a plus d'erreur de codage.
    Merci

  4. #4
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 126
    Points : 69
    Points
    69
    Par défaut
    Je vois d'où viens le problème.

    La boucle For met tjs un 1 dans la meme case jusqu'à ce que i = TextBox1.
    Enfait il faudrait qu'il garde en mémoire qu'il a déjà mis un 1 dans une des cases et qu'il l'ignore ensuite ....

  5. #5
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 126
    Points : 69
    Points
    69
    Par défaut
    C'est bon problème résolu.

    J'ai rajouté une nouvelle variable et tout marche.Merci pour ton aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    n = 0
    For i = 1 To TextBox1
        j = 0
        For j = 3 To dernierevaleur
            If Range("A" & j + n).Value = ListBox2.List(ListBox2.ListIndex) Then
                Range("F" & j + n).Value = 1
                n = j - 2
                j = dernierevaleur
     
            End If
         Next j
     
    Next i

  6. #6
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Dans ce cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    For i = 1 To TextBox1
     
        For j = 3 To dernierevaleur
            If Range("A" & j).Value = ListBox2.List(ListBox2.ListIndex) Then
                if Range("F" & j).Value <> 1 then
                    Range("F" & j).Value = 1
                     j=dernierevaleur
                 end if
            end if
         Next j
     
    Next i
    Jérôme

  7. #7
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 126
    Points : 69
    Points
    69
    Par défaut
    Merci bcp.

    C'est bcp mieux écrit .

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

Discussions similaires

  1. message d'erreur pour supprimer une table
    Par marco361020 dans le forum Access
    Réponses: 4
    Dernier message: 22/11/2006, 17h22
  2. Réponses: 9
    Dernier message: 17/08/2006, 15h04
  3. Message d'erreur pour débutant
    Par PhpDeb dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 27/04/2006, 12h14
  4. [MySQL] Message d'erreur pour atteindre ma base
    Par leloup84 dans le forum Installation
    Réponses: 7
    Dernier message: 04/02/2006, 01h51

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