Suppression caractères dans une ligne

Résolu
tibss Messages postés 21 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 12 septembre 2006 - 11 sept. 2006 à 15:12
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 12 sept. 2006 à 11:37
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

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
11 sept. 2006 à 15:28
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 #
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
11 sept. 2006 à 15:30
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
3
tibss Messages postés 21 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 12 septembre 2006
11 sept. 2006 à 15:31
ah oki merci casy, il va falloir que j'aprenne sérieusement à maîtriser left, right; mid...
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
11 sept. 2006 à 15: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 #
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tibss Messages postés 21 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 12 septembre 2006
12 sept. 2006 à 10:18
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.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
12 sept. 2006 à 11:37
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
0
Rejoignez-nous