Macro pour éviter la fonction "remplacer par"

ruliann

XLDnaute Occasionnel
:DBonjour,

J'ai une base de données sur excel qui me sert à faire du publipostage. Le publipostage comporte des photos et tout fonctionne impec.

Mais, comme on peut le lire ici et là, la procédure du publipostage d'image nécessite d'indiquer des doubles slash \\ dans les chemins d'accès des fichiers photos, au lieu des simples slash \ habituels.

Exemple:

1) je copie mon chemin d'accès:

T:\AAAAA\BBBBBB\CCCCC\DDDD.JPG

2) et ensuite, je change les simples \ par des doubles \\ grâce à la fonction remplacer par:

T:\\AAAAA\\BBBBBB\\CCCCC\\DDDD.JPG

Mon problème est que doit avoir 400 cellules à renseigner par des chemins d'accès (soit 400 photos), et que, je finis par ne plus savoir pour que cellule j'ai remplacé les \ par \\.

Donc ma question est:

y a-t-il un moyen de demander à excel > à chaque fois qu'une cellule contient des slash, il faut que les slash soit par deux (comme ça -> \\ ), pas de slash tout seul (comme ça -> \ ) !
 
Dernière édition:

nat54

XLDnaute Barbatruc
Re : Macro pour éviter la fonction "remplacer par"

Bonjour,

Tu copies tes 400 chemins de fichier dans une seule colonne ?

Si oui, tu fais les 400 lignes
et ensuite ctrlH : remplacer / par //
ca fait toute la colonne d'un coup
 

ruliann

XLDnaute Occasionnel
Re : Macro pour éviter la fonction "remplacer par"

salut nat

eh non, les 400 celules ne sont pas sur la meme colonne, elles sont disséminées sur 10 colonnes un peu partout.

J'ai 10 colonnes et 80 lignes, soit 800 cellules dont 400 destinées aux photos et à ces fameux liens...

et c'est pas pratique de devoir sélectionner (en maintenant la touche CTRL enfoncée) toutes les cellules que je dois modifier pour mettre des \\ . A force je ne sais plus lesquelles j'ai déjà modifiée, celle que je dois faire , etc..
 

ruliann

XLDnaute Occasionnel
Re : Macro pour éviter la fonction "remplacer par"

@ nat > non, je peux pas selectionner tte la feuille, car certaines celulle contiennent deja des chemins avec double slash car je l'ai mis manuellement, mais d'autre cellule ne contiennent que des simple slash

et si je selctionne tte la feuille via "remplace \ par \\", ca deco*ne, forcément...

@ pierre jean

effectivement ta macro fonctionne, mais je recnontre le meme problème que via la méthode de nat, c'est à dire que:

pour les chemins T:\AAAAA\BBBBBB\CCCCC\DDDD.JPG, c'est top nikel j'obtiens T:\\AAAAA\\BBBBBB\\CCCCC\\DDDD.JPG

par contre pour les chemins deja renseignés manuellement du type T:\\AAAAA\\BBBBBB\\CCCCC\\DDDD.JPG , bah là je me retrouve avec T:\\\\AAAAA\\\\BBBBBB\\\\CCCCC\\\\DDDD.JPG
 

ROGER2327

XLDnaute Barbatruc
Re : Macro pour éviter la fonction "remplacer par"

Bonjour à tous

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim oCel As Range, s$
  Application.EnableEvents = False
  For Each oCel In Target.Cells
    s = oCel.Value
    If UCase(Right$(s, 4)) = ".JPG" Then
      Do While s Like "*\\*"
        s = Replace(s, "\\", "\")
      Loop
      oCel.Value = Replace(s, "\", "\\")
    End If
  Next oCel
  Application.EnableEvents = True
End Sub
placé dans la feuille de saisie traite au fur et à mesure des entrées les valeurs terminées par .jpg.
Pour traiter des données déjà saisies, les sélectionner et effectuer Copier/Coller. la boucle
VB:
      Do While s Like "*\\*"
        s = Replace(s, "\\", "\")
      Loop
évite la multiplication intempestive des \.​
ROGER2327
#4847


Mardi 10 Décervelage 138 (Drapaud (érection du), V)
18 Nivôse An CCXIX
2011-W01-5T17:03:16Z
 
Dernière édition:

ruliann

XLDnaute Occasionnel
Re : Macro pour éviter la fonction "remplacer par"

salut,

pas doué l'garçon ;)

je teste pour le moment... enfin j'essaie! j'ai fait Alt F11 et j'ai copié le code dans la feuille concernée, mais quand je fais Alt F8 pour appeler la macro, elle n'est pas dispo

pqoi elle ne commence pas par Sub au fait ?
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Macro pour éviter la fonction "remplacer par"

Re…
Voyez le classeur joint.​
ROGER2327
#4848


Mardi 10 Décervelage 138 (Drapaud (érection du), V)
18 Nivôse An CCXIX
2011-W01-5T17:27:12Z
 

Pièces jointes

  • Temp.xls
    14 KB · Affichages: 82
  • Temp.xls
    14 KB · Affichages: 89
  • Temp.xls
    14 KB · Affichages: 85

ruliann

XLDnaute Occasionnel
Re : Macro pour éviter la fonction "remplacer par"

ok ! lol

je viens de voir l'interet de ta macro... quand je fais mon copié/colé, les doubles sash se mettent desormais automatiquement à chaque fois...

wouahou... trop fort

merci

Résolu !
 

ROGER2327

XLDnaute Barbatruc
Re : Macro pour éviter la fonction "remplacer par"

Re…
(…)
pqoi elle ne commence pas par Sub au fait ?
…parceque c'est une procédure évènementielle qui se déclenche lorsque la valeur d'une cellule est modifiée.
Quand vous validez Q:\toto\titi\tata\tutu.jpg, la procédure s'exécute et renvoie Q:\\toto\\titi\\tata\\tutu.jpg.
Comme je le disais plus haut,
Pour traiter des données déjà saisies, les sélectionner et effectuer Copier/Coller.
ROGER2327
#4849


Mardi 10 Décervelage 138 (Drapaud (érection du), V)
18 Nivôse An CCXIX
2011-W01-5T17:33:03Z
 

ROGER2327

XLDnaute Barbatruc
Re : Macro pour éviter la fonction "remplacer par"

Suite…
Si vous préférez une procédure traitant la sélection en cours sur demande :
VB:
Sub doubleAntislash()
Dim oCel As Range, s$
  Application.EnableEvents = False
  For Each oCel In Selection.Cells
    s = oCel.Value
    If UCase(Right$(s, 4)) = ".JPG" Then
      Do While s Like "*\\*"
        s = Replace(s, "\\", "\")
      Loop
      oCel.Value = Replace(s, "\", "\\")
    End If
  Next oCel
  Application.EnableEvents = True
End Sub
ROGER2327
#4850


Mardi 10 Décervelage 138 (Drapaud (érection du), V)
18 Nivôse An CCXIX
2011-W01-5T17:40:17Z
 

Discussions similaires

Statistiques des forums

Discussions
312 300
Messages
2 087 015
Membres
103 433
dernier inscrit
nicolaseuropa