Suppression caractères dans une ligne

Résolu
Signaler
Messages postés
21
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
12 septembre 2006
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Bonjour,
Je travaille avec une feuille Excelle qui contient plusieurs lignes.
certaines contiennet leprénom, 
"julien"...et d'autres : contiennent "ex-julien"...
Je voudrais créer une macro qui permette de supprimer "ex-" dans toutes les cellules de la première colonne.
Il faudrait don un petit programme qui permette de trouver les cellules qui contiennent "ex-" dans le cas où ces trois caractères sont présents on les supprime, dans l'autre cas, si la cellule en possède pas ces trois caractères, on va à la ligne suivante.
Il y a 2000 lignes dans le tableau, voici le type de code auquel j'ai pensé au travers des précédents conseils que j'ai recu sur vbfrance :

Dim pos As Integer
Dim chaine As String


For j = 1 To 2000
' permet de compter les caractère qui sont avant le "-"
    pos = InStr(Cells(j, 1).Value, "-")
' s'il y a des caractère avant le tiret
    If pos > 0 Then
'On supprime el tiret et les caractères qui se trouvent à sa gauche
        chaine = right(Cells(j, 1).Value, pos - 1)
        Cells(j, 1).Value = chaine
   else 
Next


Dans le cas où "-" n'est trouvé, on passe à la ligne suivante.
Quelqu'un pourrait-il me débloker?




 

6 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
For j = 1 To 2000
' permet de compter les caractère qui sont avant le "-"
    pos = InStr(Cells(j, 1).Value, "-")
' s'il y a des caractère avant le tiret
    If pos > 0 Then
'On supprime el tiret et les caractères qui se trouvent à sa gauche
        chaine = Mid(Cells(j, 1).Value, pos + 1)
        Cells(j, 1).Value = chaine
   End If
Next

sinon si tu veux utiliser Right :
        chaine = Right(Cells(j, 1).Value, Len(Cells(j, 1).Value) - pos)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Essaie ceci pour voir ci cela te convient.

Dim UnCell As Range 
'Selectionne la colonne A
ActiveWorkbook.ActiveSheet.Columns("A:A").Select 

'Pour chaque cellule de la colonne A
For Each UnCell In Selection 
    'Appelle de la fonction REplace qui ici remplace si il y a 
    ' ex- par rien du tout
    UnCell.Value = Replace(UnCell.Value, "ex-", "", 1, 1) 
Next 
 

<small> Coloration syntaxique automatique [AFCK]</small>
       

@+,   Ju£i?n
Messages postés
21
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
12 septembre 2006

ah oki merci casy, il va falloir que j'aprenne sérieusement à maîtriser left, right; mid...
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Pas mal la solution de julien aussi.

Je parirais presque qu'elle est même plus rapide.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
21
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
12 septembre 2006

La solution de Julien n'est pas mal c'est clair (même très bien), d'autant plus qu'il y a peu de lignes de code. Mais je te remercie casy, car tu as repris la même structure que le programme sur lequel je butais, ce qui m'a permis de mieux comprendre mon erreur.
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Je ne sais pas si ceci peut te convenir, mais il ne faut pas oublier qu'Excel contient déjà des outils puissants.


D'après moi, il ne sert à rien de boucler dans ce cas-ci puisque tu
veux remplacer TOUS les "ex-".  On peut tout simplement remplacer
tout d'un bloc.

Dans le cas des boucles, ça peut par contre t'aider à mieux saisir les fonctions de chaînes comme Left. Right, Mid, ...


    Cells.Select  'ou Columns("A:A").select ou autre sélection

    Selection.Replace What:="ex-", Replacement:="", LookAt:=xlPart, _

        SearchOrder:=xlByRows, MatchCase:=False

MPi