Macro remplacement
Bonsoir à tous,
j'ai besoin de votre aide pour créer une macro qui permette, en un clic, de faire des remplacements.
Je m'explique :
En colonne D j'ai les valeurs à remplacer.
En colonne E j'ai le texte qui doit remplacer ma valeur
En colonne AB se trouve la colonne où ma macro va devoir agir
C'est à dire qu'en cliquant sur mon bouton macro, toute les valeurs de la colonne D qui se retrouvent dans la colonne AB vont se changer en ce qui est inscrit en colonne E.
dans la colonne AB, la valeur qui se trouve en D3 se change en E3, D4 se change en E4, D5 se change en E5 etc etc
Pour y voir plus clair, j'ai mis en colonne AD le résultat attendu après avoir lancé la macro.
Actuellement je dois faire ça manuellement, et sachant que des tableaux peuvent être très conséquent, j y passe un temps fou. D'où l’intérêt de faire une macro
J'espère que quelqu'un pourra m'apporter son aide
Par avance merci
Bonne soirée
Bonsoir,
Il fallait décoder ton intention...
Sub Commentaires()
Dim d As Object, cmt, scd, k, i&, n&, j%, R$
Set d = CreateObject("Scripting.Dictionary")
With ActiveSheet
n = .Range("E" & .Rows.Count).End(xlUp).Row - 2
scd = .Range("D3").Resize(n, 2).Value
n = .Range("AB" & .Rows.Count).End(xlUp).Row - 2
cmt = .Range("AB3").Resize(n).Value
End With
For i = 1 To UBound(scd)
k = CStr(scd(i, 1))
d(k) = Replace(scd(i, 2), k, "")
Next i
For i = 1 To UBound(cmt)
scd = Split(cmt(i, 1), "référence")
For j = 0 To UBound(scd)
If Val(scd(j)) > 0 Then
k = CStr(Val(scd(j)))
If d.exists(k) Then
scd(j) = " " & k & d(k) & LTrim(Replace(scd(j), k, ""))
End If
End If
Next j
cmt(i, 1) = Join(scd, "référence")
Next i
ActiveSheet.Range("AE3").Resize(n).Value = cmt
End Sub
Il faudra remplacer AE par AB dans la dernière ligne, mais attention si tu remplaces la valeur initiale de AB, il faudra éviter soigneusement d'exécuter une 2e fois la macro...
Cordialement.
Bonjour Mferrrand,
Toutes mes excuses pour les explications approximatives
Je te remercie pour le temps accordé.
J ai testé ton code est le résultat est top.
Parfaitement ce qui était attendu.
Un grand merci à toi
Bonne journée