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 :

[VB Excel] Utilisation boucle DO WHILE [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2012
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 42
    Par défaut [VB Excel] Utilisation boucle DO WHILE
    Bonjour,

    Je tente de parcourir dans un fichier excel toute les colones qui commencent par "picto". Il y a des colones "pictoX" et "pictoX-text" ou X peut aller de 1 à 10 mais en fonction du fichier il peut y en avoir plus ou moins.

    Je travaille donc sur une macro:

    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
    Sub test()
     
    Dim B As Integer
    B = NumCol("picto1")
    Do
        MsgBox B
        MsgBox Cells(1, B)
        B = B + 1
    Loop While Cells(1, B) Like "picto*"
    MsgBox "Done"
     
    End Sub
     
     
    // c est une fonction qui me permet de retrouver mon numéro de colonne en fonction de son contenu
     
    Public Function NumCol(Texte As String) As Integer
    On Error GoTo ErrNumCol
    NumCol = Rows(1).Find(Texte, LookIn:=xlFormulas, lookat:=xlWhole, SearchFormat:=False).Column
    Exit Function
    ErrNumCol:
        NumCol = 0
    End Function
    malheuresement ma boucle se stopppe après le premier passage comme si mon loop while etait faux.
    j'ai tenté avec
    Loop While Cells(1, B).value Like "picto*"
    sans succès...

    Quelqu'una une idée? je fait quoi de travers?

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Ta boucle va s'arrêter dès qu'elle passe sur une cellule ne commençant pas par "picto".
    Si tu as des colonnes du genre "picto1" / "xxxx" / "picto2" / "xxxx" / "picto3", la boucle s'arrêtera après "picto1".

    Je ferais comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Dim B As Integer, x As Integer
     
    B = NumCol("picto1")
     
    For x = B To Cells(1, Columns.Count).End(xlToLeft).Column
        If Left(Cells(1, x), 5) = "picto" Then
            'ce qu'il faut faire quand la cellule comporte picto...
        End If
    Next
     
    End Sub

  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Bonjour,

    Cela vient peut-être du fait que l'opérateur like tient compte de la casse (par défaut, Option compare Binary)

    Commence le module par :

  4. #4
    Membre averti
    Inscrit en
    Septembre 2012
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 42
    Par défaut
    Merci Fring!
    ta fonction fonctionne parfaitement
    Bonne fin de journée.

    Merci aussi à Patrice740 ^_^

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

Discussions similaires

  1. Calcul sur date : utilisation boucle DO WHILE?
    Par kedmard dans le forum SAS Base
    Réponses: 2
    Dernier message: 09/08/2011, 10h43
  2. Réponses: 2
    Dernier message: 06/02/2007, 15h05
  3. [Excel] Utiliser une application externe par une macro
    Par thierry2.dlp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2005, 22h07
  4. probleme de recordset dans une boucle do while
    Par Shoryu dans le forum ASP
    Réponses: 18
    Dernier message: 05/07/2004, 15h30
  5. Appel recurssif et boucle Do...While
    Par zsoh dans le forum Langage
    Réponses: 6
    Dernier message: 31/05/2004, 18h01

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