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 :

Problème pour remplacer un caractère dans une cellule en fonction de la présence ou non d'un autre caractère


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Points : 478
    Points
    478
    Par défaut Problème pour remplacer un caractère dans une cellule en fonction de la présence ou non d'un autre caractère
    Bonjour à toutes et tous,

    Le titre est pas terrible mais le problème est sûrement très facile à résoudre.
    Je sais avant même de la tester que ma boucle ne fonctionnera pas mais je l'ai écrite entièrement afin de vous donner une idée plus claire de ce à quoi je veux arriver.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    'Mettre en forme les comptes
     
        Dim LR2 As Integer, ContainsSpecChar As Boolean, ExpAccount As Range
        With Sheets("Retreated Expenses")
        LR2 = .Range("A" & .Rows.Count).End(xlUp).Row
     
            For Each ExpAccount In .Range("A2:A" & LR2)
                If IsNull InStr(ExpAccount, ";") Then
                    ContainsSpecChar = False
                    Next ExpAccount
                Else
                    Replace(ExpAccount, "/", "")
                End If
            Next ExpAccount
    Alors voilà, je veux vérifier sur la totalité des cellules en A si le libellé contient un ";". Si ce n'est pas le cas, alors passer à la cellule suivante.
    Par contre si il y a bien présence du ";", alors je veux remplacer le "/" par rien, donc "". Petite précision tout de même, il est possible que ma cellule contienne un ";" mais ne contienne pas de "/", je n'ai même pas réussi à formaliser ça, je pense qu'il faut rajouter un If, mais j'attends déja de voir ce que vous pouvez me proposer comme piste de départ, peut-être ensuite arriverai-je à me dépatouiller seul, ce qui est le but quelque part, car comme le dit une personne de ce forum, c'est en forgeant ...
    Merci d'avance pour vos réponses, en espérant avoir été clair dans ma demande
    Runsh

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Bonjour,

    Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
    Dim c As Range, ResAdr As String
    With Sheets("Retreated Expenses")
        Set c = .[A:A].Find(";")
        If Not c Is Nothing Then
            ResAdr = c.Address
            Do
                c.Value = Application.Substitute(c.Value, "/", "")
                Set c = .[A:A].FindNext(c)
            Loop Until c.Address = ResAdr
        End If
    End With
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Membre confirmé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Points : 478
    Points
    478
    Par défaut
    Bonsoir Daniel C.,

    Ecoute, ton code a l'air pas mal (j'aurai jamais pu le faire tout seul !) et j'essaie de comprendre le "ResAdr". J'ai fait un test vite fait avec les données sur une autre feuille mais le résultat me semble excellent dans le sens où j'obtiens ce que je voulais avoir. Je fais le test avec mes données finales et reviens vers toi pour te tenir au courant.
    Quoiqu'il en soit, un grand MERCI !
    Runsh

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Tu mets l'adresse de la première cellule où tu trouves un ";" dans ResAdr; comme tu fais une recherche dans la colonne A, tu bouclerais si tu n'avais pas cette adresse. Quand Find est revenu sur la cellule initiale, la macro s'arrête.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Membre confirmé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Points : 478
    Points
    478
    Par défaut
    Merci pour tes explications. Pas évident à écrire propre ce type de boucle, mais je garde ça au chaud car très utile. J'ai besoin de m'exercer.
    Encore merci, bonne journée Daniel C.
    Runsh

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

Discussions similaires

  1. [Toutes versions] Comment remplacer un caractère dans une cellule ?
    Par chachon dans le forum Excel
    Réponses: 2
    Dernier message: 21/12/2010, 18h45
  2. Réponses: 4
    Dernier message: 05/10/2010, 15h02
  3. limite Caractère dans une cellule Excel 2000
    Par Vetchostar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/03/2007, 14h36
  4. Réponses: 1
    Dernier message: 06/12/2006, 09h22
  5. Remplacer un texte dans une cellule Excel à partir d'un point donné
    Par tonyC dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/04/2006, 19h05

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