Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Gognol77

XLDnaute Nouveau
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!!!
 

vbacrumble

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

Bonjour

Tu peux poster un fichier exemple,stp ?
( zippé et avec des données fictives)

--> Gérer les pièces jointes pour envoyer un fichier.
 

Gognol77

XLDnaute Nouveau
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

  • exemple.xls
    13.5 KB · Affichages: 114
  • exemple.xls
    13.5 KB · Affichages: 133
  • exemple.xls
    13.5 KB · Affichages: 125

TheLio

XLDnaute Accro
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
A valider par Ctrl Maj Enter
 

vbacrumble

XLDnaute Accro
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
 

Gognol77

XLDnaute Nouveau
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?
 

vbacrumble

XLDnaute Accro
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)
 

Gognol77

XLDnaute Nouveau
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

  • test2.zip
    31.7 KB · Affichages: 43
  • test2.zip
    31.7 KB · Affichages: 43
  • test2.zip
    31.7 KB · Affichages: 55

vbacrumble

XLDnaute Accro
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 ?
 

Gognol77

XLDnaute Nouveau
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...
 

vbacrumble

XLDnaute Accro
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
 

vbacrumble

XLDnaute Accro
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
 

Discussions similaires

Réponses
6
Affichages
313
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…