Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/09/2011, 17h56   #1
Membre éprouvé
 
Avatar de Runsh63
 
Homme Duc
Nihiliste
Inscription : mars 2011
Messages : 395
Détails du profil
Informations personnelles :
Nom : Homme Duc
Âge : 31
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Nihiliste
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 395
Points : 419
Points : 419
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 :
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
__________________
Cordialement,

Runsh
Runsh63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 18h36   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Essaie :

Code :
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

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 18h48   #3
Membre éprouvé
 
Avatar de Runsh63
 
Homme Duc
Nihiliste
Inscription : mars 2011
Messages : 395
Détails du profil
Informations personnelles :
Nom : Homme Duc
Âge : 31
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Nihiliste
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 395
Points : 419
Points : 419
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 !
__________________
Cordialement,

Runsh
Runsh63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 19h19   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
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

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 11h04   #5
Membre éprouvé
 
Avatar de Runsh63
 
Homme Duc
Nihiliste
Inscription : mars 2011
Messages : 395
Détails du profil
Informations personnelles :
Nom : Homme Duc
Âge : 31
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Nihiliste
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 395
Points : 419
Points : 419
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.
__________________
Cordialement,

Runsh
Runsh63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h00.


 
 
 
 
Partenaires

Hébergement Web