Programmation VBA

Fermé
MisterVBA - 17 févr. 2010 à 11:22
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 17 févr. 2010 à 15:03
Bonjour,

Je souhaite faire une macro VBA Excel qui recherche dans une colonne si les premiers caractères sont MR ou MME. Si c'est le cas supprimer "MR " ou "MME " et passer à la ligne suivante.

Merci d'avance de votre aide

Mister VBA

2 réponses

Peut etre avec un boucle for !

feuille = ThisWorkbook.Sheets("nom_de_ta_feuille).Cells(i, 1)

For i = 1 To X ( X est le nombre de ligne)
If feuille.Cells(i, 1).Characters(Start:=1, Length:=2) = "MR" Then
feuille.Cells(i, 1) = Right(feuille.Cells(i, 1), InStr(feuille.Cells(i, 1), "MR") + 2 )
Else If feuille.Cells(i, 1).Characters(Start:=1, Length:=3) = "MME" Then
feuille.Cells(i, 1) = Right(feuille.Cells(i, 1), InStr(feuille.Cells(i, 1), "MME") +3 )
End If

i = i + 1
Next i

Là en faite la boucle passe de ligne en ligne et voit si les premières lettres sont MR ou MME, si tel est le cas, la cellule est remplacé par ce qu'il y avait après le MR ou le MME

ton X correspond au nombre de ligne à vérifier
Par contre dans mon exemple il va parcourir la cellule (1 , 1 ) à la cellule (1, X ) , a toi de changer selon ton cas !!
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
17 févr. 2010 à 15:03
un petit code tout simple

J'ai mis à partir de la ligne A6 MR Durand MME dupont.....


Sub RetireLeDebut()

Dim NbLig As Integer
Dim C As Variant
Sheets("feuil1").Select
NbLig = Range("A6").CurrentRegion.Rows.Count

For Each C In Range("A6:A" & NbLig + 6)
    If UCase(Left(C, 3)) = "MR " Then
    C.Value = Replace(C.Value, "MR ", "")
        
    End If
    If UCase(Left(C, 4)) = "MME " Then
        C.Value = Replace(C.Value, "MME ", "")
    End If

Next

End Sub
0