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 :

boucle while dans vba


Sujet :

Macros et VBA Excel

  1. #1
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut boucle while dans vba
    Bonjour,

    Une boucle toute simple veut me permettre de parcourir verticalement une colonne et me prévenir par un MsgBox, si elle rencontre un jeudi (la colonne est renseignée avec les jours de la semaine)

    Voici le code de cette boucle :

    i représente le numero de ligne
    j ............................de colonne
    Valeur_Cherchee est une variable contenant "jeudi"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    While (i < 36)
                If Cells(i, j).Value = Valeur_Cherchee Then
                    MsgBox i
                End If
                i = i + 1
        Wend
    Au premier jeudi rencontré, le MsgBox s'affiche correctement et il m'affiche le numero de sa ligne (8),
    je fais OK, (je le fais en débogage pas à pas détaillé), en poursuivant, i s'incremente jusqu''au prochain jeudi, mais quand il le trouve, il nie l'égalite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    If Cells(i, j).Value = Valeur_Cherchee Then
    Il passe directement à

    et ne s'arrète plus à aucun jeudi jusqu'à la fin.

    Auriez vous une idée ?

    Merci,

    Philippe

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    D'après ce que tu décris, il semblerait que tu cherches une chaîne de caractères (jeudi). Une problème fréquent dans la recherche de chaîne de caractère est la présence de caractère espacé derrière ou devant la chaîne cherchée. Si l'espace est à l'arrière il n'est pas visible à l'oeil nu.
    Pour pallier ce problème, il y a lieu d'ajouter la fonction TRIM qui enlève les espaces avant et après la chaîne de caractères.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      Dim i As Long, j As Integer, Valeur_Cherchee As String
      i = 2: j = 1: Valeur_Cherchee = "jeudi"
      While (i < 36)
        If Trim(Cells(i, j).Value) = Valeur_Cherchee Then
         MsgBox i
        End If
        i = i + 1
      Wend
    Et pour éviter toute ambiguïté quant à la casse, tu pourrais ajouter la fonction LCase
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If LCase(Trim(Cells(i, j).Value)) = Valeur_Cherchee Then
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut
    Merci beaucoup,
    c'était bien ça et je n'y aurait pas pensé,

    A +

    Philippe

  4. #4
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    là c'est inutile(puisque jeudi est déjà tout en minuscules), mais j'ai tendance à faire ceinture et bretelles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If LCase(Trim(Cells(i, j).Value)) = LCase(Trim(Valeur_Cherchee)) Then
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    à c'est inutile(puisque jeudi est déjà tout en minuscules), mais j'ai tendance à faire ceinture et bretelles :
    C'est ce que je fais systématiquement aussi mais suite au fait que la valeur de la variable Valeur_Cherchee était correctement écrite, j'ai enlevé les deux fonctions Trim et LCase de l'instruction.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonsoir,

    Pas besoin de boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      valcherchée = "jeudi"
      Set champ = Range(Cells(1, 1), Cells(36, 1))
      Position = Application.Match("*" & valcherchée & "*", champ, 0)
      MsgBox Position
    Jacques Bosgontier

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour Jacques,
    Pas besoin de boucle
    C'est vrai à condition qu'il n'y ait qu'un seul jeudi dans la plage.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. boucle "while" dans un sous-formulaire
    Par philebaucis dans le forum VBA Access
    Réponses: 4
    Dernier message: 02/04/2017, 06h15
  2. Boucle "while" dans un fichier Javascript ?
    Par Boris56 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/04/2010, 12h31
  3. Boucle while dans tableau
    Par TheRealMike dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/06/2009, 19h50
  4. Problème de boucle while dans un popup
    Par drogba72 dans le forum Langage
    Réponses: 2
    Dernier message: 06/02/2009, 14h19
  5. probleme de boucle while dans une procedure stockée
    Par aboulemagnifique dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 08/08/2007, 12h39

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