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 :

[VBA-E] probleme de boucle


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut [VBA-E] probleme de boucle
    Bonjour,
    je cherche à créer une macro pour voir les valeurs d'une colonne qui sont déjà présentes dans les colonnes précédentes

    voici mon code :

    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
    Private Sub rechercher_Click()
    'recherche si les jobs de la dernière semaine sont déjà apparus auparavant
    Dim colonne As Integer
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim marque As Integer
    Dim chaine As String
    marque = 0
    i = 2
    j = 1
    chaine = "Voici les jobs dont c'est la première apparition : "
    If (Num_semaine.Value < 0 Or Num_semaine.Value = "" Or Num_semaine.Value > Sheets.Count - 1) Then
        MsgBox ("Valeur de semaine incorrecte")
    Else
        colonne = Num_semaine.Value
        For k = 2 To 51 'on parcourt les 50 lignes de la derniere colonne
     
            Do While marque = 0
                If (Worksheets(1).Range(Cells(k, colonne), Cells(k, colonne)).Value = Worksheets(1).Range(Cells(i, j), Cells(i, j)).Value) Then
                   marque = 1 'on arrete la recherche car la valeur a été trouvée
                Else 'la valeur n'a pas été trouvée
                    If (i <= 51) Then 'si on n'est pas à la derniere ligne de la colonne on passe à la ligne suivante
                        i = i + 1
                    Else 'Si on est à la derniere ligne de la colonne alors on passe à la premiere ligne de la colonne suivante
                        i = 2
                        j = j + 1
                        If (j = colonne) Then 'si on n'a pas trouvé la valeur alors on arrete la recherche et on ajoute le nom à la chaine de caractere
                            marque = 1
                            chaine = chaine & Worksheets(1).Range(Cells(k, colonne), Cells(k, colonne)).Value
                        End If
                    End If
                End If
            Loop
            marque = 0
        Next
    MsgBox (chaine)
    End If
    End Sub
    "Num_semaine" est recupérée dans la feuille excel.

    Le problème est que le message apparaissant ne me donne que le résultat de la premiere ligne testé(en fait ici la deuxieme ligne de la feuille car la premiere contient les libéllés), c'est à dire que si je lance la recherche pour la colonne 1, je devrais avoir toutes lse lignes car elles ne sont jamais apparues avant mais je n'ai que la premiere (si je met "for k=3 to 51", jai alors la ligne suivante etc.....) c'est donc je pense un probleme au niveau de la boucle mais je ne vois pas où, j'ai pourtant bien réaffecté la valeur 0 à "marque" apres le while.

    Merci de vos réponses

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    argggg
    j'ai trouvé par moi meme, une bien bete erreur....
    j'ai bien remis marque=0 mais pas i=2 ni j=1 apres le loop

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello,

    J'avais quelque chose à te proposer avant midi mais on a eu un pb de réseau... Je te le mets quand même vu que c'est fait

    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
    Sub ComparerDeuxColonnes()
    Dim Compteur(50), NoLigne, NoCol, NoLigneDansColonneLue, AvantDernièreColonne, i, DernièreColonne
    Dim ok As Boolean
        DernièreColonne = DatePart("ww", Now()) 'N° de la semaine en cours servant de référence
        AvantDernièreColonne = DernièreColonne - 1
        For NoCol = 1 To AvantDernièreColonne 'on commence par la 1ère semaine et on s'arrête sur la colonne précédant la colonne de référence
            For NoLigne = 2 To 51 'On parcourt les 50 lignes de la colonne de référence
                For NoLigneDansColonneLue = 2 To 51 'on parcourt les 50 lignes de la colonne lue
                    ok = Worksheets(1).Cells(NoLigneDansColonneLue, NoCol).Value = Worksheets(1).Cells(NoLigne, DernièreColonne).Value
                Next
                If ok Then
                    i = i + 1
                    Compteur(NoCol) = Compteur(NoCol) + 1
                End If
            Next NoLigne 'On passe à la ligne suivante dans la colonne de référence
        Next NoCol 'On Change de colonne vérifiée
        For NoCol = 1 To AvantDernièreColonne 
            MsgBox Compteur(NoCol) & "correspondances trouvées, colonne " & NoCol
        Next
    End Sub
    A+

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

Discussions similaires

  1. Probleme de boucle dans VBA Excel
    Par Patrick717 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 27/02/2012, 17h24
  2. VBA ACCESS probleme avec une boucle for
    Par maldini dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/04/2010, 09h52
  3. [VBA-E] PRobleme avec une boucle DO..LOOP WHILE
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 31/07/2006, 01h04
  4. [VBA-E] problème avec le sendkeys
    Par darkpocket dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/02/2005, 14h25
  5. [C#] Probleme de boucle for et random
    Par Freeman166 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/01/2005, 14h34

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