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 de loop


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
    Chargé d'affaire
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Par défaut Problème de loop
    Bonjour,

    Je suis en train d'écrire un morceau de code qui recherche dans une feuille des rangées contenant des valeurs spécifiques dans plusieurs colonnes. Il s'agit d'un simple script qui servira un mini-programme suivant la progression d'un joueur de StarCraft2.

    Mon problème est le suivant: dès que le script détecte une occurence de ce que je cherche, il boucle infiniment dessus et fait exploser ma variable tenant le compte (CountMU). Je ne comprends pas... je suis un peu nouveau à VBA et je sens que j'oublie quelque chose...

    Voici le code, merci d'avance pour le coup de pouce!!

    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
    Function CountMU(race1 As String, race2 As String, finish As String) As Integer
     
        Dim R As Range
        CountMU = 0
     
        Sheets("history").Activate
        With Sheets("history").Range("B:B")
            Set R = .Find(race1)
            If Not R Is Nothing Then
                Do
                    R.Select
                    If R.Offset(0, 3).Value = race2 Then
                        If R.Offset(0, -1).Value = finish Then
                            CountMU = CountMU + 1
                        End If
                    End If
                    Set R = .FindNext()
                Loop While Not R Is Nothing
            End If
        End With
        Set R = Nothing
    End Function

  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
    Par défaut
    Bonjour,

    Tiré de l’aide RANGE.FIND
    :
    Lorsque la recherche atteint la fin de la plage de recherche spécifiée, elle revient au début de cette plage. Pour arrêter une recherche lorsqu'elle revient au point de départ, il faut enregistrer l'adresse de la première cellule trouvée, puis comparer l'adresse de chaque cellule ultérieurement trouvée avec l'adresse enregistrée.
    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
    Function CountMU(race1 As String, race2 As String, finish As String) As Integer
    Dim R As Range
        CountMU = 0
        Sheets("history").Activate
        With Sheets("history").Range("B:B")
            Set R = .Find(race1)
            If Not R Is Nothing Then
                firstAddress = R.Address
                Do
                    R.Select
                    If R.Offset(0, 3).Value = race2 Then
                        If R.Offset(0, -1).Value = finish Then
                            CountMU = CountMU + 1
                        End If
                    End If
                    Set R = .FindNext()
                Loop While Not R Is Nothing And R.Address <> firstAddress
            End If
        End With
        Set R = Nothing
    End Function
    Cordialement.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Par défaut
    merci!!

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

Discussions similaires

  1. Problème avec Loop vb6
    Par avyrex dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 26/08/2009, 19h48
  2. Réponses: 0
    Dernier message: 26/02/2008, 18h50
  3. Problème avec une boucle Do.. Loop Until
    Par gta126 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 29/12/2007, 12h27
  4. Problème de loop avec animation flash
    Par gyver4000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 06/04/2007, 10h33
  5. Problème avec mount -o loop
    Par Captain_futur dans le forum Administration système
    Réponses: 2
    Dernier message: 25/10/2006, 08h41

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