Changer une chaine de caractère dans une case

Bonjour,

J'ai une liste de différents texte et j'aimerai à l'intérieur changer certains ID.
J'aimerai changer les study_id en des id tout en changeant aussi le contenu de l'ID à partir d'un tableau de correspondance.

Si ce n'est pas très clair, j'aimerai changer sur la feuille 1 la colonne A (old) en la colonne C (wanted).
Et ce j'aimerai bien le faire de manière automatique, en changeant "study_id==" par "id==" et en changeant aussi le contenu du study_id (avec le tableau de correspodance qui est feuille 2)

Par exemple si j'ai "drop if (study_id==522 | study_id==854)" en A1, j'aimerai qu'en B1 il y ait écrit "drop if (id=="AD" | id=="CD") (tout en ajoutant des guillemets pour id)

Est-ce qu'il y a une manière automatique de faire cela ? Avec VBA peut être ? Car dans mon fichier d'origine j'ai plus de 3000 ID à changer donc ça serait trop long de le faire à la main

Merci bien

10classeur2.xlsx (9.51 Ko)

Bonjour Sélénite ,

Une fonction NoStudy qui prend en entrée deux arguments :

  1. le texte à transformer
  2. la plage des correspondances

Le code de la fonction NoStudy est dans module1 :

Function NoStudy(x As Range, tablo As Range)
Dim t, i&, n&, m, study_id
   t = Split(x)
   For i = 0 To UBound(t)
      n = InStr(t(i), "==")
      If n > 0 Then
         m = Val(Mid(t(i), n + 2, 999))
         study_id = Application.IfError(Application.VLookup(m, tablo, 2, False), "")
         If study_id <> "" Then t(i) = Replace(t(i), m, """" & study_id & """")
      End If
   Next i
   NoStudy = Replace(Join(t), "study_id", "id")
End Function

C'est exactement ce que je voulais,

Merci beaucoup !

Bonjour à tous !

Une proposition formule ? (dynamique ou pas...) pour Microsoft 365 :

Rechercher des sujets similaires à "changer chaine caractere case"