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 :

Code VBA à revoir pour Mois et Année juxtaposés [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Moi, je ne fais que passer, excusez le dérangement
    Inscrit en
    Mars 2013
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Moi, je ne fais que passer, excusez le dérangement

    Informations forums :
    Inscription : Mars 2013
    Messages : 660
    Par défaut Code VBA à revoir pour Mois et Année juxtaposés
    Bonjour le forum,
    Quelqu'un ici m'avait fait un truc super et tout fonctionne bien.
    C'est lorsque j'arrive à mi écran par exemple le 30 ou 31 du mois pour faire remonter en cellule A1 à l'enregistrement pour le mois suivant.
    Mais c'est pour des mois avec un espace dans les onglets => Janvier 2014, Février 2014, Mars 2014 etc.
    Le code est le suivant dans ThisWorkbook:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        If InStr(1, "JanvierFévrierMarsAvrilMaiJuinJuilletAoûtSeptembreOctobreNovembreDécembre", _
                 Split(Sh.Name, "")(0), vbTextCompare) Then
            Application.Goto Sh.[A1], True
        End If
    End Sub
    Mais j'ai aussi un classeur sans espace entre mois et année => Janvier2014, Février2014, Mars2014 etc.
    Et là il reste dans la position où il se trouve après enregistrement.
    Quelqu'un a t-il une idée?
    Merci pour vos éventuelles réponses
    Bien cordialement

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    le chemin de enfer est parsemé de bonne intentions!
    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
    Type M_A
        Mois As String
        Annee As Integer
        Trouve As Boolean
    End Type
     
    Sub test()
    Dim a As M_A
    a = MoiAnnee("Janvier2014")
    If a.Trouve = False Then MsgBox "pas cool"
    a = MoiAnnee("Janvier 2014")
    If a.Trouve = False Then MsgBox "pas cool"
    a = MoiAnnee("Janvier-2014")
    If a.Trouve = False Then MsgBox "pas cool"
    a = MoiAnnee("Janvier_2014")
    If a.Trouve = False Then MsgBox "pas cool"
    Debug.Print "Mois:= " & a.Mois & " Année:= " & a.Annee
    End Sub
     
    Function MoiAnnee(V) As M_A
    Dim T
    Dim t2
    t2 = V
    T = Array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre", False)
    For I = 1 To 12
       If InStr(UCase(Trim("" & V)), UCase(T(I))) <> 0 Then Exit For
    Next
    If T(I) <> False Then
    MoiAnnee.Mois = "" & T(I)
    t2 = Replace(t2, T(I), "")
    t2 = Replace(t2, "-", "")
    t2 = Replace(t2, "_", "")
    MoiAnnee.Annee = CInt(t2)
    MoiAnnee.Trouve = True
    End If
    End Function

  3. #3
    Membre très actif
    Homme Profil pro
    Moi, je ne fais que passer, excusez le dérangement
    Inscrit en
    Mars 2013
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Moi, je ne fais que passer, excusez le dérangement

    Informations forums :
    Inscription : Mars 2013
    Messages : 660
    Par défaut
    Bonsoir rdurupt et le forum,
    J'ai trouvé ça et ça fonctionne.
    Merci rdurupt d'avoir pris le temps de considérer le problème.
    Bonne fin de soirée à tous


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        If InStr(1, "JanvierFévrierMarsAvrilMaiJuinJuilletAoûtSeptembreOctobreNovembreDécembre", _
                 Left(Sh.Name, Len(Sh.Name) - 4), vbTextCompare) Then  'Partie gauche du nom de la feuille(Exemple:Janvier)-4 représentant les 4 derniers caractères(2014)
            Application.Goto Sh.[A1], True
        End If
    End Sub

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/01/2015, 09h03
  2. Code VBA Excel pour un bouton
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/10/2008, 07h47
  3. Contribution codes VBA Excel : Pour vos UserForm
    Par Zandar dans le forum Contribuez
    Réponses: 0
    Dernier message: 01/03/2008, 17h11
  4. Validité d'un code VBA+SQL pour gestion de mémoire
    Par stefposs dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/09/2007, 13h32
  5. [VBA] select par mois et année
    Par Sebastien_INR59 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 25/07/2006, 15h56

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