[Résolu] Macro à modifier

klorane

XLDnaute Occasionnel
Bonsoir le forum,

voilà j'ai une macro qui quand on la lance me "nettoie" des références. Pb : Elle nettoie un peu trop.

Cette macro retire tout se qui se trouve avant un "-" alors qu il faudrait qu'elle ne retire que le préfixe situé en colonne C et le "-" qui suit juste après et c'est tout.

(Voir fichier joint.)

En cliquant sur le bouton : résultat de la macro en colonne K.
En colonne L le resultat auquel il faudrait arriver.
La différence est aux lignes 12 et 13 car LBP n'est pas en colonne C. Donc il ne faut pas qu'il soit supprimé par la macro.

Merci de votre aide

Klorane
 

Pièces jointes

  • demo7.xlsm
    17.9 KB · Affichages: 53
Dernière édition:

xhudi69

XLDnaute Accro
Re : Macro à modifier

Bonsoir klorane, le Forum,

à mettre dans un bouton:
Code:
Sub Bouton2_Clic()
Dim c As Range
Drl = Range("D65500").End(xlUp).Row

For Each c In Range("D2:D" & Drl)
    a = Len(c.Offset(, -1))
    c.Value = Mid(c.Value, a + 2, Len(c.Value) - a)
Next c
End Sub

EDIT: désolé je revois cela :eek:

Bonsoir paf :)

@+ :cool:
 
Dernière édition:

xhudi69

XLDnaute Accro
Re : Macro à modifier

Re bonsoir,

Ze bon code:
Code:
Sub Bouton2_Clic()
Dim c As Range
Drl = Range("D65500").End(xlUp).Row

For Each c In Range("D2:D" & Drl)
    If c.Offset(, -1) <> "" Then
        a = Len(c.Offset(, -1))
        c.Value = Mid(c.Value, a + 2, Len(c.Value) - a)
    End If
Next c
End Sub

Désolé :p

@+ :cool:
 

klorane

XLDnaute Occasionnel
Re : Macro à modifier

Bonsoir Paf, xhudi69 et les visiteurs,

j'ai testé vos lignes.
Pour l'exemple ça fonctionne mais si par exemple je change le préfixe en colonne C (en mettant E par exemple en D2,D3,D4) il continue à enlever le préfixe qui n'est pas identique en C.

La macro me supprime "D-" en D2, D3, D4 alors que "D-" ne devrait pas etre supprimé car "E-" est le préfixe à supprimer.

J'ai remis le fichier joint pour comprendre.

Klorane
 

Pièces jointes

  • demo8.xlsm
    18.4 KB · Affichages: 35

Paf

XLDnaute Barbatruc
Re : Macro à modifier

Re,

un code qui répond ( en principe ) à la demande

Code:
Sub  klorane()
Dim DerLig As Long, i As Long
DerLig = Range("D" & Rows.Count).End(xlUp).Row

For i = 2 To DerLig
    If Cells(i, 3) <> "" Then
        If Cells(i, 3) = Left(Cells(i, 4), Len(Cells(i, 3))) Then
            Cells(i, 6) = Right(Cells(i, 4), Len(Cells(i, 4)) - (Len(Cells(i, 3)) + 1))
        Else
            Cells(i, 6) = Cells(i, 4)
        End If
    Else
        Cells(i, 6) = Cells(i, 4)
    End If
Next

End Sub

A+
 

Staple1600

XLDnaute Barbatruc
Re : [Résolu] Macro à modifier

Bonsoir à tous

Une formule pouvait suffire ;)
mais puisque VBA demandé, alors
Code:
Sub a()
'adapter la formule selon la colonne à traiter
Dim p As Range, f$
f = "=IFERROR(MID(RC[-2],FIND(""-"",RC[-2])+1,9^9),RC[-2])"
    With Range("A1", Range("A" & Rows.Count).End(xlUp)).Offset(, 2)
        .FormulaR1C1 = f: .Value = .Value
    End With
End Sub

PS: La formule en question:
Code:
=SIERREUR(STXT(A1;TROUVE("-";A1)+1;9^9);A1)
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 814
dernier inscrit
JLGalley