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 :

Créer une liste avec différentes polices


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut Créer une liste avec différentes polices
    Bonjour,

    Je suis novice en programmation VBA, donc je rencontre quelques problèmes.
    Je souhaiterais faire ceci : afficher un pangramme, et la police de ce pangramme devra être celle sélectionnée dans une liste déroulante que je crée.

    Voici mes bouts de code que j'ai déjà fait :

    - C'est là où j'écris mon pangramme. Je veux récupérer la police se trouvant dans D2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Range("J16:U17").Select
    ActiveCell.FormulaR1C1 = "Portez ce vieux whisky au juge blond qui fume"
    With Selection.Font
            .Name = Range("D2") 'Comment récupérer la valeur de la police ?
    End With
    - Code de la liste que j'ai trouvé sur ce forum, que j'ai adapté à ma situation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Range("D2").Select
        With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="Calibri,Comic Sans Ms,Arial Black"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With|
    Cependant, quand je change la police dans la liste, mon pangramme n'a pas sa police de changée, pourriez-vous m'aider à résoudre ce problème ?

    Merci d'avance !

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Bonjour,
    Ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("J16:U17").Font.Name = Range("D2").Font.Name
    Devrais convenir.
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  3. #3
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    Merci de la réponse, mais ça ne change pas la police de mon mot.
    Nous ne pouvons peut-être pas changer la police du mot en fonction de la police choisie dans le menu déroulant ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    edit:
    My bad, j'avais mal compris.
    Si je comprends mieux ceci marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("J16:U17").Font.Name = Range("D2")
    Mais c'est exactement ton code ... (sans le select et le with)
    Du coup il doit y avoir quelque chose qui m'échape
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  5. #5
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    Effectivement, je viens de re-tester, mais ça ne marche pas.
    J'ai peut-être mal exprimé mon problème, donc je le refais :

    J'ai en D2 une liste où je peux choisir parmi plusieurs polices, que j'ai écrit dans ma macro.
    Ensuite en J16:U17 j'ai un mot, et je veux que la police de ce mot soit celle choisit dans ma liste en D2. Et quand je change la police dans la liste, la police de mon mot doit également changer.

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    en J16:U17 j'ai un mot
    Un seul mot sur plusieurs cellules?

    Et quand je change la police dans la liste, la police de mon mot doit également changer.
    Normalement, avec le code que tu as si tu change la police dans et que tu relance la macro la police du mot change.
    Si tu veux que ce soit automatique, c'est possible mais je ne sais pas le faire
    Normalement ce tuto devrais contenir la réponse: http://silkyroad.developpez.com/VBA/EvenementsFeuille/

    edit:
    C'est mieux expliqué dans le tuto mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$D$2" Then Range("J16:U17").Font.Name = Range("D2")
    End Sub
    à mettre dans la liste des évènements de ta feuille (alt + F11, double clic sur ta feuille à gauche)
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  7. #7
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    Oui, enfin mon mot se trouve en J19, c'est juste que j'ai fusionné de J16 à U17.

    Voilà ça marche comme je voulais ! Merci beaucoup pour ton aide !

    Une dernière chose, comment fait-on pour mettre une valeur par défaut dans ma liste ? Car là quand je lance la macro, il n'y a rien d'affiché par défaut dans ma liste.
    J'ai essayé avec Worksheet_Activate(), mais ça me met une erreur car dans la macro précédente j'ai mis Sheets("Feuille3").Select au début.
    Bon c'est de l'ordre du détail, mais ca fait mieux s'il y a quelque chose dedans quand on la lance...

  8. #8
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Faut faire attention avec les fusion, ça fait foirer des macro parfois

    pour ton problème de valeur par défaut, un exemple vite fait:
    si ya rien alors tu met arial
    (je t'autorise à changer arial par autre chose si tu veux une autre valeur par défaut)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     If Target.Address = "$D$2" Then
      if range("d2")="" then range("d2") = "arial"
     Range("J16:U17").Font.Name = Range("D2")
    end if
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  9. #9
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    Le code que tu viens de mettre, il faut que je l'insère dans ma macro, ou bien dans la feuille évènement Worksheet_Change ?

  10. #10
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Bonjour,

    J'espère que tu as trouvé la réponse à ta question tout seul, sinon un simple test permet d'y répondre non?

    Et vraiment au cas où, il manquait juste deux ligne mais je les pensais évidentes quand j'ai écris le code (le target.Adress aurait du te mettre la puce à l'oreille).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$D$2" Then
      if range("d2")="" then range("d2") = "arial"
     Range("J16:U17").Font.Name = Range("D2")
    end if
    End Sub
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  11. #11
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 62
    Points
    62
    Par défaut
    Oui j'avais trouvé, il suffisait simplement de compléter mon évènement précédent.
    Cependant, c'est bizarre, car quand je lance ma macro, il n'y a aucune police d'affichée, mais si je vais double cliquer sur la cellule où il devrait y avoir écrit "arial" par défaut, là ça apparait.
    Donc je pense que ma police par défaut se met bien, mais pour la voir, il faut aller double cliquer sur la cellule, comme si on allait écrire dedans, puis cliquer à côté pour désélectionner la cellule et voir apparaitre "arial" ...

Discussions similaires

  1. créer une liste avec un pas de 0.1
    Par Chefcou dans le forum Général Python
    Réponses: 2
    Dernier message: 06/06/2012, 20h46
  2. parcourir une List avec différents objets
    Par laurentlorient dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 03/08/2009, 09h34
  3. Créer une liste avec LinkedList
    Par kohan95 dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 29/11/2008, 18h40
  4. Réponses: 8
    Dernier message: 23/01/2008, 09h05
  5. Créer une liste avec des noms de fichiers
    Par Jeffboj dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 05h48

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