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 :

Macro selon condition


Sujet :

Macros et VBA Excel

  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 Macro selon condition
    Bonjour
    Je suis débutant en vba et essaie d'adapter les codes trouvés sur le site à mon application.
    Mais là je suis bloqué.
    J'ai une macro qui permet de rechercher dans une colonne la ligne qui contient le libellé "Largeur" et qui sur toute la ligne remplace la virgule par un point.
    Tout fonctionne bien mais certaines fois ce champ n'existe pas dans cette colonne.
    Evidemment dans ce cas ma macro bug.
    Ma question est donc : comment passer à l'action suivante si ce champ n'existe pas.
    D'avance merci pour votre aide.
    Cordialement.
    StStym

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Application.Goto Reference:="C_ProductId"
        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

  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,

    Avant toutes choses, il faut tester si Find retourne bien un Range :
    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
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
     
        With Worksheets("Feuil1")
     
            Set Plage = .Range(.Range("C_ProductId"), .Cells(Rows.Count, .Range("C_ProductId").Column).End(xlUp))
     
            Set Cel = Plage.Find("Largeur", , xlFormulas, xlPart)
     
            If Not Cel Is Nothing Then
     
                Set Plage = .Range(.Cells(Cel.Row, Cel.Column), .Cells(Cel.Row, Columns.Count).End(xlToLeft))
                Plage.NumberFormat = "@"
     
                For Each Cel In Plage: Cel.Value = Replace(Cel.Value, ",", "."): Next Cel
     
            Else
     
                MsgBox "Pas trouvé !"
     
            End If
     
        End With
     
    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
    Génial tout fonctionne très bien.
    Il faut que j'adapte ton code.
    En effet au lieu d'avoir le message "MsgBox "Pas trouvé !",
    il faut que je vérifie que dans cette colonne si les libellés " Longueur" et "Hauteur" sont aussi présents et changer leurs données en remplaçant la virgule par un point.
    Pour moi la discussion est résolue mais si tu as une solution à ma demande je suis preneur.
    Cordialement.
    StSym

  4. #4
    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,

    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
    32
    33
    34
    35
    36
    37
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Tbl
        Dim I As Integer
     
        Tbl = Array("Hauteur", "Largeur", "Longueur")
     
        With Worksheets("Feuil1")
     
     
            For I = 0 To UBound(Tbl)
     
                Set Plage = .Range(.Range("C_ProductId"), .Cells(Rows.Count, .Range("C_ProductId").Column).End(xlUp))
     
                Set Cel = Plage.Find(Tbl(I), , xlValues, xlPart)
     
                If Not Cel Is Nothing Then
     
                    Set Plage = .Range(.Cells(Cel.Row, Cel.Column), .Cells(Cel.Row, Columns.Count).End(xlToLeft))
                    Plage.NumberFormat = "@"
     
                    For Each Cel In Plage: Cel.Value = Replace(Cel.Value, ",", "."): Next Cel
     
                Else
     
                    MsgBox "Pas trouvé !"
     
                End If
     
            Next I
     
        End With
     
    End Sub
    Hervé.

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

Discussions similaires

  1. Macro pour envoi de mail auto selon conditions
    Par soadadrinker dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/06/2013, 00h16
  2. [Toutes versions] Macro suppression de lignes selon conditions via userform
    Par mattmata dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/10/2012, 13h08
  3. [VB.net] Générer une date selon condition
    Par WriteLN dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/10/2005, 16h12
  4. [VB.NET] Changer de classe selon condition
    Par daner06 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/10/2004, 10h04
  5. DLLs chargées selon condition
    Par Benjamin GAGNEUX dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 12/08/2004, 18h14

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