XL pour MAC Remplacer des valeurs dispersées sur une feuille selon une liste

cloum1

XLDnaute Nouveau
Bonjour
J'ai utilisé Excel pour faire un plan d'implantation pour un projet d'aménagement d'un local d'archives de boites sur des étagères
Les boites (cellules colorées) sont numérotées et réparties graphiquement sur une feuille (voir fichier implantation)
Je souhaiterai remplacer le numéro de boite en fonction d'une liste. J'ai 2 colonnes (colonne A étant la liste des valeurs à remplacer et colonne B la nouvelle valeur correspondante) (cf fichier liste)
Cette nouvelle valeur est en fait le numéro de la boite suivi du numéro de carton utilisé pour le déménagement. J'ai fusionné les deux avec un tiret séparateur pour créer la colonne B

J'ai bien vu que ce genre de question avait déjà été posée mais il s'agissait de valeurs en liste.

Ici les cellules à traiter sont dispersées sur la feuille !

Est ce que quelqu'un a une idée ?

Merci et bonne année !
 

Pièces jointes

  • Implantation.xlsx
    61.4 KB · Affichages: 17
  • liste.xlsx
    19.8 KB · Affichages: 5
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Cloum,
En PJ j'ai rapatrié la liste dans le même fichier pour faire plus simple.
J'ai dupliquer l'autre feuille pour avoir les repères.
Dans la nouvelle feuille il suffit ainsi de faire :
VB:
=RECHERCHEV(Ancien!E18;Liste!$A:$B;2)
Mais la liste n'est pas complète donc j'ai arrêté. Dans la liste il manque : 4232 ... 4177, 0801 ... 0643 que j'ai mis en rouge en colonne D.
Il en manque beaucoup d'autres, mais le principe est là il vous suffit de remettre à jour la liste et de mettre les bonnes formules.
 

Pièces jointes

  • Implantation.xlsx
    135.7 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonsoir cloum1, sylvanu,

Une solution VBA avec cette macro :
VB:
Sub Remplacer()
Dim t#, r As Range, P As Range, v As Variant, n&
t = Timer
With Feuil1
    Set r = Intersect(.UsedRange.EntireRow, .[E:AD])
End With
Application.ScreenUpdating = False
On Error Resume Next
With Workbooks.Open(ThisWorkbook.Path & "\liste.xlsx")
    If Err Then MsgBox "Fichier 'liste.xlsx' introuvable...": Exit Sub
    On Error GoTo 0
    Set P = .Sheets(1).[A:B]
    For Each r In r
        If r <> "" Then If r.Interior.ColorIndex <> xlNone Then v = Application.VLookup(r, P, 2, 0): If Not IsError(v) Then r = v: n = n + 1
    Next
    .Close False
End With
Application.ScreenUpdating = True
MsgBox n & " remplacements effectués en " & Format(Timer - t, "0.00 \sec")
End Sub
Téléchargez les fichiers joints dans le même dossier et ouvrez le fichier .xlsm.

A+
 

Pièces jointes

  • Implantation(1).xlsm
    71.2 KB · Affichages: 4
  • liste.xlsx
    19.8 KB · Affichages: 4

cloum1

XLDnaute Nouveau
Bonjour Sylvanu
Merci pour votre retour !!. c'est exactement ca
Je vais essayer de voir comment ca marche mais je ne maitrise pas le VBA.
effectivement il manque des valeurs , il faut que je finisse de mettre en forme le tableau.
je dois auparavant mettre un préfixe "DOC-" devant la valeur contenue dans chaque cellule colorée en jaune
Est ce que ca peut se faire automatiquement ?
 

job75

XLDnaute Barbatruc
J'ai essayé ta macro . Merci ! mais il ne trouve pas le fichier liste.xlsx (pourtant j'ai mis les 2 dans un même dossier )
Ah oui j'oubliais que vous êtes sur MAC, le séparateur de chemin n'est pas "\".

Alors utilisez ce fichier (2) avec :
VB:
With Workbooks.Open(ThisWorkbook.Path & Application.PathSeparator & "liste.xlsx")
 

Pièces jointes

  • Implantation(2).xlsm
    71.5 KB · Affichages: 3
  • liste.xlsx
    19.8 KB · Affichages: 1

cloum1

XLDnaute Nouveau
Merci !!, je viens d'essayer c'est top. Apparement vous avez fait aussi le nécessaire pour que cela ne modifie que les cellules en couleur (numéro de boite) , je craignais justement que cela ne modifie aussi les autres cellules qui possèdent aussi des données pouvant se trouver dans la lise.

Merci beaucoup en tout cas, je n'aurais pas pu faire autant !
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 294
Messages
2 086 899
Membres
103 404
dernier inscrit
sultan87