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 :

Format Cellule en fonction d'une valeur dans une autre cellule [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 156
    Points
    156
    Par défaut Format Cellule en fonction d'une valeur dans une autre cellule
    Bonsoir

    J'aimerai utiliser une macro qui pourrait me mettre un format dans une colonne
    en fonction de la valeur [5120100] trouvé dans une colonne en amont

    J'ai cherché sur le net mais je n'ai pas trouvé, le code qui me convient


    Pourriez vous m'aider à écrire cette petite macro

    je cherche la valeur [51210100] dans la colonne [A] pour mettre la cellule dans la colonne [N] au format

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
        Sub format()
    Range("i3:i100").Select
    For Each cell In Selection
    Selection.NumberFormat = "0000000000000"
    Next cell
    End Sub
    Merci d'avance de votre coup de main

    Christian

  2. #2
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Sans vba, il suffit d'utiliser une mise en forme conditionnelle.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 156
    Points
    156
    Par défaut
    Oui merci


    Mais je voudrais lancer une macro qui le ferait

  4. #4
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut format cellule en fonction ...
    Bonsoir,

    Ta demande est imprécise.

    Tu veux mettre la valeur 51210100 d'une cellule de la colonne A dans quelle cellule de la colonne N et avec quel format ?

    Cordialement,

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 156
    Points
    156
    Par défaut
    j'ai 2
    Colonne [A] est indiqué des numéros de comptes comptables
    Colonne [I] est indiqué des références

    Je voudrais que le format des références se trouvant dans la [I] soit sur 13 caractères lorsqu'ils correspondent au compte [51210100] se trouvant en [A]

  6. #6
    Membre éclairé
    Homme Profil pro
    D.E.
    Inscrit en
    Octobre 2013
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : D.E.

    Informations forums :
    Inscription : Octobre 2013
    Messages : 562
    Points : 764
    Points
    764
    Par défaut
    Citation Envoyé par crissud Voir le message

    Selection.NumberFormat = "0000000000000"
    Attention car si la colonne I contient des valeurs numériques, les 0 vont s'ajouter devant et non derrière.

    Voilà ce que j'ai fait et qui semble fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub MEF()
    R = 1
    While valeur <> 51210100
        Range("I" & R).Select
        valeur = ActiveCell.Value
        R = R + 1
    Wend
            ActiveCell.FormulaR1C1 = "5121010000000"
            Selection.NumberFormat = "0000000000000"
    End Sub

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 156
    Points
    156
    Par défaut
    Oui merci

    c'est le but

  8. #8
    Membre éclairé
    Homme Profil pro
    D.E.
    Inscrit en
    Octobre 2013
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : D.E.

    Informations forums :
    Inscription : Octobre 2013
    Messages : 562
    Points : 764
    Points
    764
    Par défaut
    Alors, si les 0 doivent etre devant, il faut enlever le ActiveCell.FormulaR1C1 = "5121010000000" de la macro que j'ai postée.

  9. #9
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut format cellule en fonction
    Re....

    Est-ce que ceci ne serait pas plus approprié que d'indiquer un format.
    Si oui je pense que des connaisseurs trouveront à la simplifier.
    A loger sur la feuille concernée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub worksheet_change(ByVal target As Range)
      If Not Intersect(Columns("i:i"), target) Is Nothing Then
        If target.Offset(0, -8) = 51210100 Then
           Application.EnableEvents = False
           If Len(target.Value) < 13 Then
              MsgBox "13 caractères recquis"
              target.ClearContents
           End If
           Application.EnableEvents = True
        End If
     End If
    End Sub
    Cordialement,

  10. #10
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Citation Envoyé par crissud Voir le message
    Oui merci


    Mais je voudrais lancer une macro qui le ferait
    Il y a l'enregistreur de macro qui donne un début de réponse à peaufiner

    ça donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub MFC()
     
    Worksheets("Feuil2").Range("I:I").FormatConditions.Add(Type:=xlExpression, Formula1:="=$A1=51210100").NumberFormat = "0000000000000"
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 156
    Points
    156
    Par défaut
    Bonsoir

    J'ai adapté le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub MFC()
     
    Worksheets("Feuil1").Range("I1:I100").FormatConditions.Add(Type:=xlExpression, Formula1:="=et($A1=51210100)").NumberFormat = "0000000000000"
     
     
    End Sub
    Mais j'ai un problème bien que j'indique à partir de $A1 dans le code VBA cela ce transforme en un numéro de ligne et fausse mon renvoi de format

    Je ne comprends pas ce qui se passe

    Comment peut-on faire ?


    Merci d'avance
    Christian
    Images attachées Images attachées  

  12. #12
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Une question sans relation. Pourquoi le Et dans:
    et($A1=51210100)
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  13. #13
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut format cellule en fonction
    Bonsoir,

    Pour moi le code proposé marche parfaitement.

    Par contre, je ne comprends pas par quelle magie cette "sub MFC()" se comporte exactement comme une macro événementielle.
    "MFC" ne semble pourtant pas être un nom réservé qui peut sans altération du résultat être remplacé par "machin".

    C'est précisément cette ignorance qui m'avait conduit à proposer plus haut une événementielle plus ou moins bien ficelée, ne voyant pas d'autre possibilité de traiter la question.

    Cordialement,

  14. #14
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    MFC c'est un nom quelconque.
    La procédure permet de réaliser une mise en forme conditionnelle et qui peut être appliquée manuellement une seule fois comme indiqué dans la réponse #2
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  15. #15
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut format cellule en fonction
    Je ne comprends pas alors l'intérêt du questionneur à vouloir impérativement entrer la condition avec une sub.
    En effet, dès le premier passage elle écrira, selon ce que tu dis et ce que j'ai constaté, la condition dans le menu du tableur où elle restera à demeure exactement comme si elle avait été entrée manuellement dans celui-ci.

    Je ne vois pas que la modification ultérieure de la condition s'en trouvera facilitée qui ne fera qu'ajouter la nouvelle à l'ancienne.

    Enfin c'est son affaire ! J'ai quant à moi appris quelque chose: C'est vraisemblablement une sub inutile.

    Cordialement,

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 156
    Points
    156
    Par défaut
    Au départ, je ne pensais pas à Mise en forme conditionnelle mais à de codage VBA.

    C'est mercatog qui a avancé l'idée, de le faire par la fonction au menu d'excel.
    J'avais l'idée en tête, de lancer un macro à la fin de la saisie de mes références, mais au fil de vos commentaires je m'aperçois que je cherche à compliquer alors que la proposition de mercatog d'utiliser la fonction de MFC est plus simple et aboutit au résultat souhaité.

    je testerai ce soir

    Merci de vos commentaires qui m'ont permis d'avancer

    Christian

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2014, 12h05
  2. Réponses: 2
    Dernier message: 24/02/2009, 17h40
  3. quand je selectionne une valeur dans une liste, retourne une autre valeur
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/12/2008, 14h23
  4. Réponses: 1
    Dernier message: 25/09/2006, 17h15
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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