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 :

Verifier un FindNext [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Par défaut Verifier un FindNext
    Bonjour,

    Voila j'aimerais vérifier que mon code FindNext dans une boucle FOR ne repasse pas sur la meme cellule.

    Comment faire?

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    tu prends l'argument row et column de ton find puis tu boucles tant que les deux ne sont pas les mêmes.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Par défaut
    Bonjour,

    J'ai fais cela mais dès que la valeur se répète + de 2 fois cela pose problème.

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    montre ton code

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    'boucle sur la colonne A
    For i = 1 To 1000
    If Range("A" & i) <> "" Then
        'Cherche la valeur de B dans la colonne P
        Set rg = Range("P1:P200").Find(Range("C" & i).Value)
     
        If rg Is Nothing Then
            'Ajoute si pas trouvé
            idest = Range("P65536").End(xlUp).Row + 1
            'P = CAI
            Range("P" & idest) = Range("C" & i)
            'R = date
            Range("R" & idest) = Range("B" & i)
            'Q = volume
            Range("Q" & idest).Value = Range("H" & i).Value
            'S = qantité
            Range("S" & idest).Value = Range("J" & i).Value
        Else
            rg.Activate
            For j = 1 To 5
                If Range("B" & i) > datemaxi And ActiveCell.Offset(0, 2) > datemaxi Then
                    ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(0, 1).Value + Range("H" & i).Value
                    ActiveCell.Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value + Range("J" & i).Value
                    Exit For
                Else
                    If Range("B" & i) <= datemaxi And Range("B" & i) = ActiveCell.Offset(0, 2) Then
                        ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(0, 1).Value + Range("H" & i).Value
                        ActiveCell.Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value + Range("J" & i).Value
                        Exit For
                    Else
                        veriflig = ActiveCell.Row
                        verifcol = ActiveCell.Columns(ActiveCell.Columns.Count).Column
                        Range("P:P").FindNext(After:=ActiveCell).Activate
                        If ActiveCell.Row = veriflig And ActiveCell.Columns(ActiveCell.Columns.Count).Column = verifcol Then
                            'Ajoute si pas trouvé
                            idest = Range("P65536").End(xlUp).Row + 1
                            'P = CAI
                            Range("P" & idest) = Range("C" & i)
                            'R = date
                            Range("R" & idest) = Range("B" & i)
                            'Q = volume
                            Range("Q" & idest).Value = Range("H" & i).Value
                            'S = qantité
                            Range("S" & idest).Value = Range("J" & i).Value
                            Exit For
                        End If
                    End If
                End If
            Next j
        End If
    End If
    Next i

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour gigalia

    Il faut mémoriser la première occurence trouvée par FIND pour pouvoir la comparer avec celles trouvées par FindNext.

    Cordialement.

    Docmarti.


    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
    Else
     
            Set premiere = rg
            rg.Activate
     
            For j = 1 To 5
                If Range("B" & i) > datemaxi And ActiveCell.Offset(0, 2) > datemaxi Then
                    ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(0, 1).Value + Range("H" & i).Value
                    ActiveCell.Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value + Range("J" & i).Value
                    Exit For
                Else
                    If Range("B" & i) <= datemaxi And Range("B" & i) = ActiveCell.Offset(0, 2) Then
                        ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(0, 1).Value + Range("H" & i).Value
                        ActiveCell.Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value + Range("J" & i).Value
                        Exit For
                    Else
                        veriflig = ActiveCell.Row
                        verifcol = ActiveCell.Columns(ActiveCell.Columns.Count).Column
     
                       Set pp = Range("P:P").FindNext(After:=ActiveCell)
     
                       If premiere.Address = pp.Address Then Exit For
     
                        pp.Activate
     
                        If ActiveCell.Row = veriflig And ActiveCell.Columns(ActiveCell.Columns.Count).Column = verifcol Then

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

Discussions similaires

  1. Verifier qu'une connexion ado s'est bien déroulé
    Par Hell dans le forum Bases de données
    Réponses: 5
    Dernier message: 22/06/2004, 10h55
  2. [langage] vérifier les caractères d'une chaîne
    Par perlaud dans le forum Langage
    Réponses: 2
    Dernier message: 24/05/2004, 16h43
  3. [langage] vérifier une adresse email
    Par GMI3 dans le forum Langage
    Réponses: 10
    Dernier message: 19/10/2003, 18h06
  4. schema xml + xml qui va avec, comment verifier?
    Par Slash dans le forum Valider
    Réponses: 4
    Dernier message: 02/03/2003, 11h16
  5. Verifier qu'un dossier existe (batch)
    Par kakou dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 08/01/2003, 13h46

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