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 date courante


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 33
    Points
    33
    Par défaut Sélection colonne date courante
    Hello,

    J'ai un fichier contenant des valeurs par jour.
    Les jours sont en colonnes et les valeurs en lignes.

    Je voudrai qu'à l'ouverture du fichier et au changement de feuille (car il y a plusieurs feuilles similaires mais pour des dates différentes), la date courante soit sélectionnée.
    La ligne contenant les jours (dans l'ordre) est H2. J'ai par exemple ceci :
    27/2 28/2 1/3 2/3 3/3 .... etc
    Et pour chaque jour j'ai des lignes avec des valeurs.

    Voici donc ce que j'ai 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
    Private Sub Workbook_SheetActivate(ByVal Sh As Object, ByVal Target As Range)
     
     
        Dim cellule As Range    
        Dim sToday As String
     
        sToday = Format(Now, "d/m")
     
        For Each cellule In ThisWorkbook.Worksheets(ActiveSheet).Range("H2").EntireRow
            If cellule.Value = sToday Then
                cellule.Select
            End If
        Next
    EndSub
    1) Je récupère la date courante au même format que dans le tableau excel
    2) Je parcours la ligne H2 et je sélectionne toute la colonne de la cellule contenant la date courante

    Bon apparemment mon For Each n'est pas bon et je n'ai pas mis le code pour sélectionner la colonne de la cellule. Le VBA n'est pas mon fort , quelqu'un aurait-il une idée ?

    Merci par avance !

  2. #2
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Ok mais déjà mon For Each n'est pas bon, il ne compile même pas (Incompatibilité de type).

    D'autres pistes ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Euh..Je ne vois pas comment ton code peut marcher là . Il n'y a même plus de boucle.

  4. #4
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu as encore raison, je vais me coucher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
    Dim cell As Range
        With ActiveSheet
            For Each cell In .Range("H2:H" & Range("H65536").End(xlUp).Row)
                If Format(cdate(cell.Value),"d/m") = sToday Then
                    cell.Select
                End If
            Next
        End With
    End Sub

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Hum toujours pas bon. C'est le range qui a l'air d'être faux.
    J'ai besoin de parcourir toute la ligne 2, et il n'y a pas forcément le même nombre de colonne dans chaque feuille. Par contre le début des dates sera toujours la cellule H2.

    Exemple :
    - Feuille 1 : les dates vont de H2 à DZ2
    - Feuille 2 : les dates vont de H2 à GK2

  6. #6
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    J'ai cru que tu cherchais une ligne, pas une colonne. Mais j'ai une excuse : Que venait faire H2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Dim cell As Range
        With ActiveSheet
            For Each cell In .Range(Cells(2, 8), Cells(2, Range("IV2").End(xlToLeft).Column))
                'MsgBox cell 'pour voir ce que tu compares
                If Format(CDate(cell.Value), "d/m") = sToday Then
                    cell.Select
                End If
            Next
        End With
    End Sub

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Yeah ! C'est mieux comme ça. Désolé pour le "H2" qui traînait.
    Pourquoi "IV2" (je ne comprends pas) ?

    Autre question, un peu plus recherchée :
    Mon tableau est en 2 parties ("figer les volets") : la partie fixe (les premières colonnes) et la partie qui "bouge" (les colonnes avec les dates).
    Je voudrai qu'en plus du .Select sur la date courante, ce soit la colonne (de la cellule de la date courante) qui soit positionnée en premier après le figeage des volets.

    Je ne sais pas si je suis assez clair. En gros il faut juste que je définisse la colonne de la cellule contenant la date courante, comme "début de volet".

  8. #8
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Pourquoi "IV2" ?
    Valable jusqu'à Excel 2003 ou pour les "*.xls" -> IV est la dernière colonne de la feuille de calculs (A, B, C, D,... IV )
    Pour placer la cellule date du jour, ligne 2 en haut à gauche regarde ScrollColumn et ScrollRow dans l'aide en ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Worksheets("La Feuille").Activate
    ActiveWindow.ScrollColumn = Cell.Column
    ActiveWindow.ScrollRow = 2

  9. #9
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Valable jusqu'à Excel 2003 ou pour les "*.xls" -> IV est la dernière colonne de la feuille de calculs (A, B, C, D,... IV )
    C'est bien ce que je pensais mais j'ai eu un doute comme pour mon cas (Excel 2007), ma dernière colonne c'est GK.

    Pour ScrollColumn, nickel. Merci beaucoup ouskel'n'or. C'est vraiment un forum de qualité !

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

Discussions similaires

  1. Sélection colonne fonction de la date + format colone
    Par fabiencal dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/10/2008, 16h21
  2. [Rave5] Date courante
    Par piscine dans le forum Rave
    Réponses: 1
    Dernier message: 21/11/2004, 10h59
  3. Réponses: 4
    Dernier message: 24/08/2004, 13h54
  4. sélection colonnes et lignes d'une dbgrid
    Par propa dans le forum Bases de données
    Réponses: 6
    Dernier message: 13/05/2004, 10h32
  5. Date courante
    Par missllyss dans le forum SQL
    Réponses: 5
    Dernier message: 29/08/2003, 11h09

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