Remplacer une chaine de caratères à partir d'un tableau

  • Initiateur de la discussion Initiateur de la discussion Gognol77
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

Gognol77

Guest
Bonjour à tous!
J'ai une question à soumettre à la communauté:
J'ai 2 tableaux, l'un contenant des noms et dans la cellule en face de ces noms une chaine de caractères avec à l'intérieur un code. Dans l'autre tableau, nous avons une liste de code et en face de chaque code sa transcription en un nom. Ma question est: est-il possible très simplement de remplacer les codes du premier tableau par l'équivalent nom du second tableau?
D'avance merci de m'avoir lu!!!
 
Re : Remplacer une chaine de caratères à partir d'un tableau

Voila l'exmple:
Feuil1: la chaine 255-2080 dans la colonne E est à remplacer par le contenu de la cellule B1 dans la feuil2.
Une idée sans passer par les 'remplacer' manuels?
 

Pièces jointes

Re : Remplacer une chaine de caratères à partir d'un tableau

Hello,
Si tu veux seulement récupérer la valeur numérique de ta cellule "E1" (ce qui à l'air d'être le cas,
Une formule matricielle
{=STXT(E1;MIN(SI(ESTNUM(STXT(E1;LIGNE(INDIRECT("1:"&NBCAR(E1)));1)*1)*
LIGNE(INDIRECT("1:"&NBCAR(E1)))<>0;ESTNUM(STXT(E1;LIGNE(INDIRECT("1:"&
NBCAR(E1)));1)*1)*LIGNE(INDIRECT("1:"&NBCAR(E1)))));MAX(ESTNUM(STXT(E1;
LIGNE(INDIRECT("1:"&NBCAR(E1)));1)*1)*LIGNE(INDIRECT("1:"&NBCAR(E1))))-MIN(SI(
ESTNUM(STXT(E1;LIGNE(INDIRECT("1:"&NBCAR(E1)));1)*1)*LIGNE(INDIRECT("1:"&
NBCAR(E1)))<>0;ESTNUM(STXT(E1;LIGNE(INDIRECT("1:"&NBCAR(E1)));1)*1)*LIGNE(
INDIRECT("1:"&NBCAR(E1)))))+1)}
A valider par Ctrl Maj Enter
 
Re : Remplacer une chaine de caratères à partir d'un tableau

Bonjour


Une proposition

Code:
Option Explicit

Sub macro()
Dim TexteAremplacer$, TexteDEremplacement$
Dim C As Range, Plage As Range
TexteAremplacer = Feuil2.Range("A1")
TexteDEremplacement = Feuil2.Range("A1").Offset(, 1)
Set Plage = Feuil1.Range("E1:E" & [E65536].End(xlUp).Row)
For Each C In Plage
If Not IsEmpty(C) Then
C.Value = Replace(C.Text, TexteAremplacer, TexteDEremplacement)
End If
Next
End Sub
 
Re : Remplacer une chaine de caratères à partir d'un tableau

Merci pour ta réponse, ça fonctionne dans le fichier exemple, pas dans mon fichier source... 15000 lignes sur 26 colonnes pour le tableau1 et 700 lignes pour le tableau2, ça semble faire quelquechose puis ça rend la main et rien n'a changé au final. Une idée du pourquoi du comment? 😕
 
Re : Remplacer une chaine de caratères à partir d'un tableau

Re


Le code proposé ne s'applique qu'à la colonne E

et avec des feuilles dont le codename est Feuil1 et Feuil2.

Joins un fichier exemple ( compressé en zip ), plus proche de la réalité.

(Avec 20 lignes * 26 colonnes pour ton tableau 1 et ton tableau 2)
 
Re : Remplacer une chaine de caratères à partir d'un tableau

Bonjour,
Je viens de finir un fichier 'test' mais j'ai du garder 300 lignes et virer un grand nombre de colonnes pour le rendre opérationnel.
Merci pour ton aide VBA.
GG.
 

Pièces jointes

Re : Remplacer une chaine de caratères à partir d'un tableau

Bonjour


Quelle est la logique ?

A quoi servent les valeurs en Feuil2 (A1:A336) -> 336 lignes

en Feuil1 il y a 300 lignes.


Tu veux remplacer les valeurs de la colonne E par celles de la colonne A (Feuil2)
ligne par ligne ? C'est ça ?
 
Re : Remplacer une chaine de caratères à partir d'un tableau

Feuil1: j'ai épuré car il y a 50 fois plus de lignes
Feuil2: il y a normalement 700 entrées

La logique: je veux remplacer dans la feuil1 tous les codes dur style 9-255 par le nom en face. c'est tout. J'avais commencer par des rechercher/remplacer mais sur 700 entrées...
 
Re : Remplacer une chaine de caratères à partir d'un tableau

Re


Essayes déjà cette macro avec la colonne E
et essayes de modifier pour le reste

Code:
Sub test()
Dim i As Long
Dim wS As Worksheet
Dim wD As Worksheet
Application.ScreenUpdating = False
Set wS = ThisWorkbook.Sheets("Feuil2")
Set wD = ThisWorkbook.Sheets("Feuil1")
    With wD
        For i = 1 To .Range("E65536").End(xlUp).Row
        .Cells(i, "E") = _
                "snkne=" & Chr(34) & _
                 wS.Cells(i, "A").Text & Chr(34)
        Next
    End With
Application.ScreenUpdating = True
Set wS = Nothing
Set wD = Nothing
End Sub
 
Re : Remplacer une chaine de caratères à partir d'un tableau

Re


Avec cette version ci (et si j'ai compris de quoi il s'agit), on traite
plusieurs colonnes:

Code:
Sub test2()
Dim i As Long, j As Long
Dim wS As Worksheet
Dim wD As Worksheet
Dim Prefixe, AdrCol
Prefixe = Array("uniqueid=", "srcne=", "src=", "snkne=", "snk=")
AdrCol = Array("B", "C", "D", "E", "F")
Application.ScreenUpdating = False
Set wS = ThisWorkbook.Sheets("Feuil2")
Set wD = ThisWorkbook.Sheets("Feuil1")
    With wD
        For i = 1 To .Range("E65536").End(xlUp).Row
        For j = 0 To UBound(AdrCol)
        .Cells(i, CStr(AdrCol(j))) = _
                Prefixe(j) & Chr(34) & _
                 wS.Cells(i, "A").Text & Chr(34)
            Next j
        Next i
    End With
Application.ScreenUpdating = True
Set wS = Nothing
Set wD = Nothing
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
22
Affichages
1 K
Retour