Remplacer un texte en fonction d'une BD

  • Initiateur de la discussion Initiateur de la discussion lolobala
  • 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 !

L

lolobala

Guest
Bonjour à tous,

Je cherche désespérément une macro qui serait capable de me convertir un texte en fonction d'une "bd".
Je m'explique dans le fichier joint :
Par exemple si C3 est égal à "SANS" le remplacer par "043010" si F3 est égal à "10BR"
ou encore si C15 = "SANS" le remplacer par "040020" si F15="IN20BR"

J'avais éssayé :

Dim nb_lignes As Integer

nb_lignes = WorksheetFunction.CountA(Range("A:A")) 'compte le nombre de ligne à analyser

For I = 2 To nb_lignes

If Cells(I, 3) = "SANS" And Cells(I, 6) = "10BR" Then
Cells(I, 3) = "'043010"
End If
If Cells(I, 3) = "SANS" And Cells(I, 6) = "IN20BR" Then
Cells(I, 3) = "'040020""
End If

ça marche mais le code est beaucoup trop long.
Ce que je voudrai c'est le résumé en utilisant une "BD".
J'ai essayé avec la fonction .find mais je n'y arrive pas.

Auriez vous une idée ?
Merci d'avance pour votre aide.
 

Pièces jointes

Re : Remplacer un texte en fonction d'une BD

Bonjour lolobala,
Une proposition
VB:
Sub test()
Dim Rng As Range, R As Range
With Sheets("TEST")
    Set Rng = .Range(.Cells(2, 8), .Cells(Rows.Count, 3).End(xlUp).Offset(0, 5))
    Rng.FormulaLocal = "=SI(C2=""SANS"";RECHERCHEV(F2;BD!$A$2:$B$13;2;0);"""")"
    Rng.Value = Rng.Value
    Set Rng = Rng.SpecialCells(xlCellTypeConstants)
    For Each R In Rng.Areas
        R.Copy Cells(R(1, 1).Row, 3).Resize(R.Rows.Count, 1)
    Next R
    .Columns(8).ClearContents
End With
End Sub
Cordialement
 

Pièces jointes

Re : Remplacer un texte en fonction d'une BD

Bonjour Efgé et merci pour votre réponse.

Après avoir testé je me suis aperçu que le 0 de 043010 par exemple disparaissait.
Y'aurait-il un moyen de palier à ce problème ?

Aussi, pour adapter au mieux votre programme à mon cas, je souhaiterai avoir un rapide descriptif des étapes.
Etant débutant dans le VBA je suis un peu largué.

Merci pour votre aide.
 
Re : Remplacer un texte en fonction d'une BD

Re
Une version plus simple, plus courte et plus rapide.
Le code est commenté dans le classeur
VB:
Sub test_2()
Dim Rng As Range, R As Range
With Sheets("TEST")
    Set Rng = .Range(.Cells(2, 3), .Cells(.Rows.Count, 3).End(xlUp)).Offset(0, 5)
    With Rng
        .FormulaLocal = "=SI(C2=""SANS"";""'"" & RECHERCHEV(F2;BD!$A$2:$B$13;2;0);C2)"
        .Value = .Value
        .Copy .Parent.Range("$C$2")
        .ClearContents
    End With
End With
End Sub
Cordialement
 

Pièces jointes

Re : Remplacer un texte en fonction d'une BD

C'est pas évident mais je pense avoir compris.
Encore une petite question sur cette formule

Rng.FormulaLocal = "=SI(C2=""SANS"";""'"" & RECHERCHEV(F2;BD!$A$2:$B$13;2;0);C2)"

Peut-on écrire ?
Rng.FormulaLocal = "=SI(C2=""SANS"";""'"" & RECHERCHEV(F2;'[modifier le csv.xlsm]BD!'$A$2:$B$13;2;0);"""")"

Faisant référence à un autre classeur ?
Ou faut-il passer par workbooks ?

Merci.
 
Re : Remplacer un texte en fonction d'une BD

Re
D'après moi, oui, mais tu devrais essayé pour vérifier.
Comme le dit si bien Victor21 (que je salut au passage):
Le manque de curiosité est un vilain défaut 😀

Regarde ma version 2 Elle est plus simple.

Cordialement
 
Re : Remplacer un texte en fonction d'une BD

Bonjour Efgé.

Je tenais à te remercier pour ton aide précieuse.
Après avoir fait de nombreux test, j'ai pu faire ce que je désirai.
J'ai encore beaucoup de chose à apprendre.

Encore merci.
A +

Le sujet est résolu.
 
- 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
5
Affichages
840
Réponses
4
Affichages
692
Réponses
4
Affichages
538
Retour