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 :

Executer macro selon un libellé présent dans une colonne [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Par défaut Executer macro selon un libellé présent dans une colonne
    Bonjour

    J'ai créé une macro avec la méthode "pas à pas" qui permet de sélectionner la colonne contenant le libellé "Origine" et de rechercher dans celle ci le champ nommé "Longueur" et
    de remplacer toutes les valeurs de cette ligne la virgule par un point.
    Et de faire de même pour la ligne qui contient le libellé "Largeur".
    Tout fonctionne très bien, mais certaines fois ces libellés ne sont pas présents dans cette colonne et bien évidemment ma macro bug.
    J'ai essayé sur le web avec pour mots clé " Excel macro selon valeur cellule" mais n'ai pas trouvé quelque chose répondant à ma demande.
    Ma question est donc comment pouvoir sauter cette transformation si les libellés " Longueur" ou "Largeur" ne sont pas présents dans cette colonne.
    J'avoue être novice dans les macros et surtout si elles font appel à des If des End If et Else.

    D'avance merci pour votre aide.
    Cordialement.
    StSym

    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
    Sub VirgulePoint()
        Application.Goto Reference:="Origine"
        ActiveCell.EntireColumn.Select
        Selection.Find(What:="Longueur", After:=ActiveCell, LookIn:= _
            xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
            xlNext, MatchCase:=False, SearchFormat:=False).Activate
        ActiveCell.EntireRow.Select
        Selection.NumberFormat = "@"
        For Each Cell In Selection
        Cell.Value = Replace(Cell.Value, ",", ".")
        Next
     
        Application.Goto Reference:="Origine"
        ActiveCell.EntireColumn.Select
        Selection.Find(What:="Largeur", After:=ActiveCell, LookIn:= _
            xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
            xlNext, MatchCase:=False, SearchFormat:=False).Activate
        ActiveCell.EntireRow.Select
        Selection.NumberFormat = "@"
        For Each Cell In Selection
        Cell.Value = Replace(Cell.Value, ",", ".")
        Next
     
    End sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Comme ceci peut être ?
    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
     
    Sub VirgulePoint()
     
        Dim Cel As Range
        Dim Cel2 As Range
     
        Set Cel = Range("Origine").EntireColumn.Find("Longueur", ActiveCell, xlFormulas, xlPart)
     
        If Not Cel Is Nothing Then
     
            Cel.EntireRow.NumberFormat = "@"
     
            For Each Cel2 In Cel.EntireRow.Cells
                Cel2.Value = Replace(Cel2.Value, ",", ".")
            Next
     
        End If
     
        Set Cel = Range("Origine").EntireColumn.Find("Largeur", ActiveCell, xlFormulas, xlPart)
     
        If Not Cel Is Nothing Then
     
            Cel.EntireRow.NumberFormat = "@"
     
            For Each Cel2 In Cel.EntireRow.Cells
                Cel2.Value = Replace(Cel2.Value, ",", ".")
            Next
     
        End If
     
    End Sub
    Hervé.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Par défaut
    Bonjour Theze

    J'ai copié ton code dans mon fichier mais quand je lance la macro j'ai un message d'erreur "Incompabilité de Type".
    Je vais ce week end essayer de bidouiller ton code pour essayer d'arriver au résultat souhaité.
    Si tu as une piste je suis preneur

    Je pense que cela vient peut-être du format des cellules.
    Ou peut-être ai-je mal posé ma question.

    D'ailleurs j'ai un doute sur ma phrase:
    "qui permet de sélectionner la colonne contenant le libellé "Origine" "
    est ce que ton code va sélectionner la cellule qui a pour valeur "Origine" ou celle qui est nommée "Origine"?


    Cordialement.
    StSym

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Sur quelle ligne as tu cette erreur?

    est ce que ton code va sélectionner la cellule qui a pour valeur "Origine" ou celle qui est nommée "Origine"?
    Celle qui est nommée "Origine"

    Juste une remarque, il vaut mieux préciser la feuille sur laquelle on travaille, soit avec son nom, soit avec son codeName (je trouve mieux la dernière option, l'utilisateur pouvant changer le nom de l'onglet sans que le code en soit affecté).
    Par exemple avec le codeName Feuil1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set Cel = Feuil1.Range("Origine").EntireColumn.Find("Longueur", ActiveCell, xlFormulas, xlPart)
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Par défaut
    Bonjour Qwazerty,

    Merci pour tes remarques au sujet du nom de la feuille à préciser dans le code.

    C'est bon j'ai trouvé , il fallait être sur la cellule nommée "Origine" avant de lancer macro.

    J'ai donc rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         Application.Goto Reference:="Origine"
    et tout fonctionne bien.

    Merci à toi et Theze pour votre aide.

    Cordialement
    StSym

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Alors essai plutôt comme ça, ça sera plus propre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set Cel = Range("Origine").EntireColumn.Find("Longueur", Range("Origine"), xlFormulas, xlPart)
    Je te laisse compléter en précisant la feuille.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

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

Discussions similaires

  1. [XL-2010] Afficher les différentes valeurs présentes dans une colonne
    Par Toug19 dans le forum Excel
    Réponses: 5
    Dernier message: 23/07/2015, 14h31
  2. [XL-2003] Protéger un mot de passe présent dans une macro
    Par Chevrefeuille dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/03/2010, 20h17
  3. Réponses: 3
    Dernier message: 05/02/2010, 03h45
  4. [XL-2003] Définir une variable présente dans une autre macro
    Par gandalf20000000 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/11/2009, 15h02
  5. Convertir des données présentes dans une colonne
    Par padawan31 dans le forum MySQL
    Réponses: 1
    Dernier message: 16/07/2009, 11h11

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