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 :

Sélection colonne dans boucle avec condition


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 30
    Par défaut Sélection colonne dans boucle avec condition
    Bonjour

    Apres qq recherches...et ne trouvant pas de rep, j'expose mon pb !
    Le voici !

    Sur la ligne 3, de L3 à BD3 j'ai ceci :
    de L3 à O3 Janvier 09
    de P3 à S3 février 09
    et ainsi de suite jusque Décembre 09 en BD3

    Si nous sommes en juin, j'aimerais sélectionner le mois de mai et ainsi de suite.
    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
    Sub Macro1()
        
        Sheets("FFR_Synthesis_BC").Visible = True
        Sheets("FFR_Synthesis_BC").Select
        Dim mydate, mydate2
    
    edit :     mydate = Month(Date)  1
               mydate2 = Month(Date) - 2    
    MsgBox Format(mydate, "mmm yyyy")
    
    ' pour information BD3 = cells (3,56) tandis que L3 = cells (3,11)
    
    'Range("BD3").Select
    For colindex = 56 To 11
            With Worksheets("FFR_Synthesis_BC").Cells(3, colindex)
                If (.Value >= mydate) Then
                Else
                   Application.Goto reference:=Worksheets("FFR_Synthesis_BC").Cells(3, colindex), Scroll:=True
                End If
            End With
       Next colindex
       Sheets("FFR_Synthesis_BC").Visible = False
    End Sub
    Le problème est que je n'entre meme pas dans la boucle With j'ai l'impression
    Si vous avez des pistes, je vous en remercierais par avance !

    A bientot

  2. #2
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    Quand tu fais une boucle comme celle ci, le pas par defaut est 1, donc dans ton cas tu parts de 56 et tu montes:
    57.58.59...
    Il faut que tu mettes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For colindex = 56 To 11 step-1
    ...
    Next colindex

  3. #3
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Salut,

    J'ai pas tout regarde mais effectivement tu ne risques pas de rentrer dans la boucle FOR. Tu lui dis d'aller de 56 a 11 donc tu es hors limite des le depart.
    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For colindex = 56 To 11
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For colindex = 56 To 11 Step -1

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For colindex = 56 To 11 Step-1
            With Worksheets("FFR_Synthesis_BC").Cells(3, colindex)
                If (.Value >= mydate) Then
                Else
                   Application.Goto reference:=Worksheets("FFR_Synthesis_BC").Cells(3, colindex), Scroll:=True
    Exit For
                End If
            End With
       Next colindex
    Sans entrer dans tes détails
    ajoute le Exit For

    Tu es sur qu'il n'y a pas plus simple de résumer toutes tes lignes

    Edit: J'ai pas vu le Step -1 (Bonjour Minick); et avec, il va toujours s'arrêter dans la colonne 11 sans le Exit For

  5. #5
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    Une proposition pour simplifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sub trouver()
    dim today as date, mydate as date
    dim Plage as range, trouve as range
    today = Now()
    mydate=DateAdd("m", -1, today)   'renvoie today -1 mois
    set Plage=range("L3:DB3")
    set trouve=Plage.find(mydate,LookIn:=xlValues, SearchOrder:=xlByRows)
    If not trouve is nothing then trouve.select
    end sub
    Edit: déclaration des variables

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Je ne vais pas comprendre quand on écris cette "Terreur":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Condition Then
    Else
       Action
    End If
    Alors que ceci est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If Not Condition Then Action

  7. #7
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    En plus dans ce cas il suffisait de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If .Value < mydate Then
    ...
    End If

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 30
    Par défaut
    ahhh coool Merci beaucoup !

    Je ne savais pas qu'on pouvait mettre un "Exit For"... génial
    C'était la solution

    Merci beaucoup

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

Discussions similaires

  1. [XL-2010] Sélection de plusieurs ligne avec condition (Problème dans le code)
    Par yassine0077 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/02/2015, 10h18
  2. Champ calculé dans formulaire avec conditions
    Par applefield dans le forum IHM
    Réponses: 4
    Dernier message: 30/08/2007, 16h59
  3. Boucle avec condition
    Par sl1980 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/08/2007, 20h24
  4. Boucle avec condition "perdu"
    Par guismoman33 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/06/2007, 10h38
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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