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 :

Problème avec un enchainement de boucles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Décembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 5
    Par défaut Problème avec un enchainement de boucles
    Bonjour,

    J'ai de nouveau une question, qui doit surement être simple à résoudre pour beaucoup de personne malheureusement je bloque depuis 1 jours dessus.

    J'ai une succession de 2 boucles qui ne fonctionnent pas.

    Voici le code que j'ai écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    h = 0
    t = 1
            Do While h <>  10                        'Tant que h est différent de 10, la boucle recommence'
                Do While Cells(t, 1) = ""             'J'imbrique une nouvelle boucle. Tant que la cellule T,1 est nulle j'incrémente t'
                t = t + 1
     
                Loop
                h = h + 1 'lorsque la cellule (t,1) n'est plus nulle j'incrémente h'
            Loop
            Label3.Caption = Cells(t, 1).Value 'je copie la dixième valeur non nulle de la colonne 1'
    L'objectif de cet enchainement de boucle est de trouver la 10ème (ou variable) valeur souhaité dans une colonne et de l'écrire dans le label3.

    Le problème, c'est que ce ne fonctionne pas. Il me trouve seulement la première valeur non nulle dans la colonne 1.

    Merci de votre aide. Je ne suis pas un crack en vba, mais si il y a plus pratique je suis preneur.

    J'espère avoir été assez clair.

    D'avance merci

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Mais je pense qu'il y a plus simple.
    Que souhaites-tu faire vraiment au final ? Uniquement trouver cette 10ème valeur non nulle ?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 258
    Par défaut
    On peut aussi utiliser
    Mais je pense que ton probleme vient de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do While Cells(t, 1) = ""
    si tu cherche une valeur nulle, il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do While Cells(t, 1) = 0
    le "" signifie qu'il n'y a rien dans la cellule, pas qu'elle est à 0.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Décembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 5
    Par défaut
    Je souhaite trouver la nième valeur (j'avais pris 10 pour exemple, mais à terme ce sera une variable) non nulle d'une colonne et l'afficher dans un label.

    Le seul moyen que j'ai trouvé, c'est de faire un enchainement de boucle. C'est à dire la première boucle défini jusqu'à qu'elle valeur il faut s'arrêter (ex = 10 dans l'exemple ci-dessus) et la seconde boucle recherche les valeurs non nulle.

    Si vous avez plus simple je suis preneur.

  5. #5
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Je te propose ceci :
    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
    Sub find()
    Dim res As Range
    Dim nb As Integer
    Dim val As Integer
     
    nb = InputBox("Combien de valeurs non nulles ?", "Recherche", 0)
     
    val = 0
    With Worksheets("Feuil3")
        Set res = .Range("A1")
        For i = 0 To .Columns(1).find("*", , , , xlByColumns, xlPrevious).Row - 1
            If res.Offset(i, 0) <> 0 Then
                val = val + 1
                If val = nb Then
                    'place ce que tu veux faire lors de la n-ème valeur non nulle trouvée ici
                    MsgBox "Valeur = " & res.Offset(i, 0).Value & vbCrLf & "Adresse = " & res.Offset(i, 0).Address
     
                    Exit Sub
                End If
            End If
        Next i
    End With
     
    MsgBox "Il n'y a pas " & nb & " valeurs non nulles."
     
    End Sub
    Tien moi au courant !

    PS : je suis parti sur des valeurs non nulles. Soit des 0 ou des valeurs.
    Si tu veux tester avec des cellules vides, remplace avec ceci :

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Décembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 5
    Par défaut
    En l'adaptant à ma situation ça fonctionne au top....

    Un grand merci, ça faisait un jour que je calais comme un mauvais !!

    Merci également pour la réactivité.

    @+

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/06/2012, 09h37
  2. Problème avec closeCursor() dans les boucles
    Par Gordibach dans le forum Langage
    Réponses: 1
    Dernier message: 08/09/2011, 23h05
  3. [XL-2007] Problème avec If dans une boucle
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/06/2011, 08h48
  4. Problème avec boutons dans une boucle
    Par CHAP26 dans le forum Flash
    Réponses: 2
    Dernier message: 03/06/2008, 14h28
  5. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 10h19

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