Bonjour à toutes et tous,
Imaginons un classeur contenant 2 onglets : Table et Base
Table : table de correspondance entre d'anciens codes et de nouveaux code (alpha, numérique et ou alpha numérique)
Base : une base données (énormément de valeurs) contenant en colonne A dans mon exemple des valeurs avec des anciens codes ou nouveaux codes.
Je cherche via une macro (j'arrive par formule recherche V par exemple mais avec ajout d'une colonne supplémentaire que je veux absolument éviter de créer qui plus est avec obligation d'étirer la formule au fur et à mesure des imports de données, je voudrais automatiser un peu plus) remplacer dans base colonne A les anciens codes si présents par les nouveaux codes conformément à la table de correspondance. Les anciens codes seraient écrasés par les nouveaux. (pas besoin de conserver historique).Les anciens codes ne sont pas forcément présents systématiquement dans la base, la base peut contenir à la fois des nouveaux codes et des anciens (il ne faut modifier que les anciens codes).
On m'a proposé une solution via Macro (merci beaucoup à son créateur) ci aprés le code qui fonctionne très bien bien, mais qui fait appel à l'instruction "Dictionary" et donc pas opérationnel sur Excel pour Mac.
J'ai essayé via une instruction de type "collection" sans succès (je ne suis pas du tout un utilisateur confirmé des macros et des instructions VBA, je me débrouille avec perte de beaucoup de temps par
tâtonnement et ou via l'enregistreur de macro mais j'apprend).
J'espère que certains qui maitrisent les MACRO et VBA sous Excel Mac pourront m'apporter une piste de solution.
Merci
Cordialement
Hugues
Imaginons un classeur contenant 2 onglets : Table et Base
Table : table de correspondance entre d'anciens codes et de nouveaux code (alpha, numérique et ou alpha numérique)
Base : une base données (énormément de valeurs) contenant en colonne A dans mon exemple des valeurs avec des anciens codes ou nouveaux codes.
Je cherche via une macro (j'arrive par formule recherche V par exemple mais avec ajout d'une colonne supplémentaire que je veux absolument éviter de créer qui plus est avec obligation d'étirer la formule au fur et à mesure des imports de données, je voudrais automatiser un peu plus) remplacer dans base colonne A les anciens codes si présents par les nouveaux codes conformément à la table de correspondance. Les anciens codes seraient écrasés par les nouveaux. (pas besoin de conserver historique).Les anciens codes ne sont pas forcément présents systématiquement dans la base, la base peut contenir à la fois des nouveaux codes et des anciens (il ne faut modifier que les anciens codes).
On m'a proposé une solution via Macro (merci beaucoup à son créateur) ci aprés le code qui fonctionne très bien bien, mais qui fait appel à l'instruction "Dictionary" et donc pas opérationnel sur Excel pour Mac.
Bloc de code:
Sub MAJcode()
Dim d As Object, n%, i%
Set d = CreateObject("Scripting.Dictionary")
With Worksheets("TABLE")
n = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To n
d(.Cells(i, 1).Value) = .Cells(i, 2)
Next i
End With
With Worksheets("BASE")
n = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To n
If d.exists(.Cells(i, 1).Value) Then _
.Cells(i, 1) = d(.Cells(i, 1).Value)
Next i
.Activate
End With
End Sub
J'ai essayé via une instruction de type "collection" sans succès (je ne suis pas du tout un utilisateur confirmé des macros et des instructions VBA, je me débrouille avec perte de beaucoup de temps par
tâtonnement et ou via l'enregistreur de macro mais j'apprend).
J'espère que certains qui maitrisent les MACRO et VBA sous Excel Mac pourront m'apporter une piste de solution.
Merci
Cordialement
Hugues