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 :

Slogan qui change chaque mois


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Points : 11
    Points
    11
    Par défaut Slogan qui change chaque mois
    Bonjour à toutes et à tous,

    Je dois faire en sorte qu'à l'ouverture d'un fichier, un slogan s'affiche dans une cellule et change en fonction du mois.

    J'ai une cellule (h7) sur la feuil1 nommée "demande" dont la formule est : = aujourdhui(). En (B1) j'ai =mois(h7) format mmmm

    J'ai ce code sur thisworkbook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub thisworkbook_open()
    Feuil1.SloganDuMois
    End Sub
    Sur feuil1 j'ai essayé le code suivant : (qui ne fonctionne pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub SloganDuMois()
     
    If [b1] = "janvier" Then [b37] = "soglan janvier"
     
     
    End Sub
    Je pense que c'est parceque b1 est une formule et non une valeur ?

    Merci d'avance pour votre aide.

  2. #2
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 160
    Points
    160
    Par défaut
    Bonjour
    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select Case WorkSheets("Feuill1").Range("B1").value
        Case "janvier"
              WorkSheets("Feuill1").Range("B37").Value = "slogan janvier"
        Case "février"
    .....
    End select
    Ce code est à placer dans WorkBook_Open
    Slts

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Merci Plateforme3 mais pour que ca fonctionne il faudrait que je récupére en B1 le texte du mois de la cellule H7 (si on est le 30/08/2007 je dois récupérer en B1 : "août") Hors avec la formule =mois(h7) excel renvoie janvier

    Comment faire soit par excel, soit par code VBA.

    Merci.

  4. #4
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 160
    Points
    160
    Par défaut
    Re bonjour
    En VBA
    Te renverra le mois en cours en toute lettres
    Te renverra le mois en cours sous forme d'une chaine de 2 chiffres
    Slts

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    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_Open()
    Sheets("Feuil1").Select
        Range("A1").Select
    Select Case Month(Date)
    Case 1
    ActiveCell.FormulaR1C1 = "slogan janvier"
    Case 2
    ActiveCell.FormulaR1C1 = "slogan février"
    Case 7
    ActiveCell.FormulaR1C1 = "slogan juillet"
    Case 8
    ActiveCell.FormulaR1C1 = "slogan gagné"
    End Select
    End Sub

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Points : 11
    Points
    11
    Par défaut Ca ne vas toujours pas
    désolé Plateforme3 et random mais ça ne fonctionne pas.

    J'ai modifié B1 = mois(g7) et j'ai laissé B1 au format nombre

    Donc voilà où j'en suis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub thisworkbook_open()
    Select Case Worksheets("feuil1").Range("b1").Value
    Case 1
    Worksheets("feuil1").Range("b37").Value = "Slogan 01"
    Case 8
    Worksheets("feuil1").Range("b37").Value = "Slogan 08"
     
     
    End Select
    End Sub
    Message d'erreur : "l'indice n'appartient pas à la selection"

    Merci.

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 160
    Points
    160
    Par défaut
    A quelle ligne du code le message apparait?
    Parce que je teste et ça marche!

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    c'est quand je suis sur la feuil1 et que je fais :

    Outils/macro/ et puis éxécuter la macro

    Quand j'ouvre le fichier je ckique sur éxécuter les macro et là la macro tourne et je n'ai pas de message d'erreur. Par contre rien ne s'affiche dans la cellule b37.

    Voilà.

    Je suis sur excel 2003 et VBA 6.3

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 160
    Points
    160
    Par défaut
    Bizarre autant qu'étrange...
    Ce qui m'inquiète, c'est que tu ais accès à ta macro depuis le menu, car moi je ne la voie pas apparaitre
    Et que ça ne marche pas à l'ouverture, car moi ça marche
    Une question donc, la macro: Sub thisworkbook_open(), tu l'as prise dans les macros proposés par VBA ou tu as tapé le nom toi même?
    Slts

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    J'ai tapé le nom qui apparait dans le projet VBA.

    Par contre, par outils/macro ....... le nom de la macro qui apparait est :

    thisworkbook.thisworkbook_open

    Là, je suis largué de chez largué et je ne sais plus quoi faire.

  11. #11
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    J'ai enlevé this et là quand j'ouvre le fichier la macro bloque sur la ligne :

    Select case ......

    Peut-être que ça va t'aider.

  12. #12
    Membre averti Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Points : 314
    Points
    314
    Par défaut
    Bonjour Bonjour !!

    je passe par ici et viens donner un petit avis :

    pas besoin de faire ça avec VBA

    je te conseille de faire une petite (mais toute petite riquiqui mini) base de données en fait composée de 1 colonne et de 12 lignes.

    Slogan Janvier
    Slogan Février
    ...
    Slogan de toilette (oops je m'égare)
    ...
    Slogan de Décembre


    Ensuite il y a une fonction génialissime :
    (Roulement de tambours et tout et tout)
    DECALER(Cellule de Référence ,Lignes ,Colonnes)
    Cette fonction te permet de prendre la valeur de la Celulle de référence avec un décalement du nombre de Lignes et de Colonnes

    Imaginons maintenant que tu veuilles utiliser mon idée :
    Ta base de données se trouve en colonne AB :
    "AB2" -> Janvier .... "AB13" -> Décembre
    Ton "=Aujourdhui()" est en "AC1"
    Tu veux afficher le slogan dans la case "B2" il te suffira de faire ceci
    =DECALER(AB1,MOIS(AC1),0)
    et là (Maintenant les vrais roulements de tambour mais les vrais de vrai ....)
    ton slogan se mettra à jour a chaque fois, sans execution de macro aucune

    Et comme je suis gentil, je te mets même à disposition un petit fichier exemple tout pitit simple

  13. #13
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 160
    Points
    160
    Par défaut
    Citation Envoyé par Ercohuma59 Voir le message
    J'ai enlevé this et là quand j'ouvre le fichier la macro bloque sur la ligne :

    Select case ......

    Peut-être que ça va t'aider.
    Question idiote? Ta feuille s'appelle bien Feuil1?

  14. #14
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Yes Plateform3, comme indiqué dans mon premier message.

    J'ai vérifié dans VBA :

    Dans ProjetVBA : feuil1 (demande)
    Dans propriétés feuil1 : name=feuil1

    Merci à mordrhim pour sa soluce. Je vais essayer et si j'y arrive pas en VBA je l'adopterai.

    Cent fois sur le métier remet ton ouvrage

  15. #15
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Mordrhim,

    J'ai copié l'intégralité de ta feuille excel (sauf la formule qui est en b37)

    Eh ben ça me met 30-aout-07 et en b37 c'est le slogna de janvier qui s'affiche et non celui d'aout comme sur ta feuille.

    Comment ça se fait ??

  16. #16
    Membre averti Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Points : 314
    Points
    314
    Par défaut
    si ton fichier est trop gros montre moi voir ca
    ensuite
    je suis sur VBA 2000 en français, la différence pourrait venir d'ici

  17. #17
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Excuse mordrhim

    J'avais pas copié la "joli" petite macro.

    A présent ça marche.

    Si persone ne trouve en VBA (car je préfére ne pas avoir de formule que l'on peut écraser) je prendrai cette solution.

  18. #18
    Membre averti Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Points : 314
    Points
    314
    Par défaut
    PS : la macro elle sert à rien ^^ juste à ecrire les "Slogan du mois de : "Mois"->"

    pour faire en VB :
    Récuperer la valeur d'un mois : month()
    Avoir le AUJOURDHUI() : Now
    ensuite :
    - Soit tu fais correspondre Month(Now) avec des Case
    - Soit tu fais une mini base de données comme mon exemple et tu fais correspondre Month(Now) avec la cellule ou se trouve ton slogan correspondant
    - Soit tu créés un array :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array("Un truc bidon","Slogan de Janvier", ... , "Slogan de Décembre")
    Comme le premier indice d'array est 0 je rajoute "Un truc bidon" pour que Month(Now) corresponde bien ..

    je fais exprès de te donner juste des indications car il y a trop de monde qui cherche des "Poules pondeuses" ou "Developpeur pondeurs de code"

  19. #19
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Points : 11
    Points
    11
    Par défaut J'ai trouvé la solution : la voici et ça marche
    Ben c'est chié non !

    Code dans this workbook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub thisworkbook_open()
    GoTo feuil1_slogan
    End Sub
    Code dans feuil1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub feuil1_slogan()
    If Range("b1").Value = "1" Then Range("b37") = "slogan 01"
    If Range("b1").Value = "2" Then Range("b37") = "slogan 02"
    If Range("b1").Value = "3" Then Range("b37") = "slogan 03"
    If Range("b1").Value = "4" Then Range("b37") = "slogan 04"
    If Range("b1").Value = "5" Then Range("b37") = "slogan 05"
    If Range("b1").Value = "6" Then Range("b37") = "slogan 06"
    If Range("b1").Value = "7" Then Range("b37") = "slogan 07"
    If Range("b1").Value = "8" Then Range("b37") = "slogan 08"
    If Range("b1").Value = "9" Then Range("b37") = "slogan 09"
    If Range("b1").Value = "10" Then Range("b37") = "slogan 10"
    If Range("b1").Value = "11" Then Range("b37") = "slogan 11"
    If Range("b1").Value = "12" Then Range("b37") = "slogan 12"
    End Sub
    Bon c'est peut-être pas du grand VBA mais l'important c'est que fonctionne.
    Et si ça peut servir à d'autres............
    Si vous avez des commentaires ou des améliorations, je suis preneur.

    Bonne soirée à tous.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/03/2012, 18h05
  2. Réponses: 2
    Dernier message: 14/09/2011, 16h17
  3. Déplacement vers un point aléatoire qui change à chaque tour
    Par Lulou40 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 13/10/2009, 12h54
  4. Creer un rapport qui change chaque semaine.
    Par amne26 dans le forum IHM
    Réponses: 5
    Dernier message: 03/12/2008, 14h13
  5. [JMeter] Récupration d'une variable qui change à chaque process
    Par vendeeman dans le forum Tests et Performance
    Réponses: 3
    Dernier message: 11/12/2007, 12h00

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