remplacer texte sous condition

patdef07

XLDnaute Nouveau
Bonjour,
Je me permets de solliciter votre aide.
Je souhaite effectuer une "macro" pour remplacer un texte par un autre et suis parfaitement nulle en VBA.
Je vous joins un fichier exemple.

Pour situer un peu le problème :
J'effectue des requêtes depuis mon logiciel CRM. La clé de tri de ces requêtes ne peut être que "l'étape", or dans mon
fichier Excel, je dois trier par commercial. La taille des informations est telle qu'il me faut gagner de la place pour tout soit placé sur une feuille A4 (en largeur j'entends).
Dans un premier temps, je voudrais qu'automatiquement, à partir d'une liste, excel remplace le nom complet du commercial par son trigramme.
J'ai beau chercher, je ne sais pas comment vous faites cela.

Si la réponse a déjà été donnée (enfin, clairement, parce que les macros, c'est quand même compliqué) n'hésitez pas à me le dire (avec le lien svp !)


Merci de votre aide.
 

Pièces jointes

  • test suivi affaires commerciales.xlsx
    17.4 KB · Affichages: 34

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : remplacer texte sous condition

Bonsoir patdef07,

Voir le fichier joint. Le code est dans module1.
VB:
Sub Trigrammes()
Dim dico, tablo, i&

' création du dictionnaire
Set dico = CreateObject("scripting.dictionary")
With Sheets("trigrammes")
  ' lecture du tableau des trigrammes
  tablo = .Range(.Range("a3"), .Range("b" & .Rows.Count).End(xlUp)).Value
  ' remplissage du dico (clef = tablo(i,1) <=> le nom)
  ' et (valeur = tablo(i,2) <=> trigramme)
  For i = 2 To UBound(tablo)
    dico(tablo(i, 1)) = tablo(i, 2)
  Next i
End With

With Sheets("Liste des affaires")
  ' lecture du tableau correspondant à la colonne des noms
  tablo = .Range(.Range("b1"), .Range("b" & .Rows.Count).End(xlUp))
  ' on remplace le nom par son trigramme
  For i = 2 To UBound(tablo)
    tablo(i, 1) = dico(tablo(i, 1))
  Next i
  ' on écrit la tableau par dessus la colonne des noms
  .Range("b1").Resize(UBound(tablo), 1) = tablo
End With
  
End Sub

Edit: préférez la Lien supprimé qui corrige une anomalie décrite ICI
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : remplacer texte sous condition

Bonjour Patdef07,

Une version v2 qui corrige le défaut logique suivant de la v1: si le nom est absent du tableau des trigrammes (ou bien si on exécute la macro plus d'une fois), la macro supprime le nom (ou tous les trigrammes) au lieu de le(s) conserver.

Pour cela, on a rajouté une condition dans la boucle finale qui consiste à vérifier que le nom est bien présent dans les clefs du dictionnaire avant de procéder au remplacement par son trigramme.
If dico.exists(tablo(i, 1)) Then tablo(i, 1) = dico(tablo(i, 1))
 

Pièces jointes

  • patdef07-test suivi affaires commerciales-v2.xlsm
    23.6 KB · Affichages: 39
Dernière édition:

Discussions similaires

Réponses
34
Affichages
4 K

Statistiques des forums

Discussions
312 412
Messages
2 088 196
Membres
103 763
dernier inscrit
p.michaux