[Résolu] VBA comment remplacer une chaîne qui contient des guillemets

Gecko62

XLDnaute Nouveau
Bonjour,

Par l'enregistreur de Macro j'ai obtenu ce code qui fonctionne très bien lorsqu'il est lancé au clavier et à la souris par CTRL + H, mais qui ne fonctionne pas en VBA (le remplacement ne s'effectue pas)

Code:
    Selection.Replace What:="=""T"";1;0", Replacement:="=""T"";0;0", LookAt:= _
        xlPart, SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

J'ai essayé de doubler les guillemets

Code:
    Selection.Replace What:="=""""T"""";1;0", Replacement:="=""""T"""";0;0", LookAt:= _
        xlPart, SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

Pas de message d'erreur, mais cela ne fonctionne pas non plus ...

J'ai essayé de remplacer les guillemets, par leur valeur ASCII

Code:
    Selection.Replace What:="=" & Chr(34) & "T" & Chr(34) & ";1;0", Replacement:="=" & Chr(34) & "T" & Chr(34) & ";0;0", LookAt:= _
        xlPart, SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

Pas de message d'erreur, mais le remplacement ne s'effectue toujours pas !!

Quelqu'un a-t-il une solution ?

Un grand merci pour votre réponse
 
Dernière édition:

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA comment remplacer une chaîne qui contient des guillemets

Re,

je viens de tester sur fichier , le code fonctionne .......... à la condition préalable d'avoir sélectionné la cellule

à+
Philippe
 
Dernière édition:
G

Guest

Guest
Re : VBA comment remplacer une chaîne qui contient des guillemets

Re,

Ne serait-ce pas le '=' qui est mal placé?
S'il fait partie de la chaine, ce serait : What:="""=T"";1;0"
Idem pour Replacement

[edit]: à réfléchir ce ne doit pas être cela!
Hello Philippe;)

A+
 
Dernière modification par un modérateur:

Gecko62

XLDnaute Nouveau
Re : VBA comment remplacer une chaîne qui contient des guillemets

Merci de vos réponses,

mais malheureusement aucune n'est satisfaisante puisque la partie de la chaîne à modifier est présente dans 51 cellules, sur environ 60 onglets.

La colonne où se trouve cette formule est sélectionnée avant l'opération de remplacement cf ci dessous

Code:
Sub MaJ_130927_TriEleves()


    DeProtect
    Columns("D:D").ColumnWidth = 3
    Range("D20:D70").Select
    Selection.Replace What:="=""T"";1;0", Replacement:="=""T"";0;0", LookAt:= _
        xlPart, SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Columns("D:D").ColumnWidth = 0
    Protect
    Range("G4:I6").Select
End Sub

La chaîne à utiliser pour le remplacement est bien ="T";1;0 et elle doit être remplacée par ="T";0;0

Une fois encore un grand merci pour vos idées et vos pistes en espérant qu'il y en aura d'autres

Gecko62
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA comment remplacer une chaîne qui contient des guillemets

Re bonjour à tous,
mais malheureusement aucune n'est satisfaisante puisque la partie de la chaîne à modifier est présente dans 51 cellules, sur environ 60 onglets.
il faut alors inclure ce code dans une boucle pour pouvoir faire automatiquement le remplacement dans les onglets concernés

........... mais sans voir le fichier ????????????

à+
Philippe
 

Gecko62

XLDnaute Nouveau
Re : VBA comment remplacer une chaîne qui contient des guillemets

Une fois encore un grand merci,

Je m'apperçois que je ne suis pas très clair, ta solution fonctionne lorsqu'il s'agit de texte saisi dans une cellule, mais j'aimerais modifier le contenu d'une formule

la formule siaise dans la celllule D29 (par exemple) étant : =SI(A29="";2;SI(C29="A";3;SI(C29="T";0;0))) et là cela ne fonctionne plus par VBA, mais très bien par le CTRL + H manuel

J'ai modifié votre fichier en ce sens le mien contenant malheureusement des données confidentielles et "pesant" plus de 15 Mb

Une fois encore un grand merci pour votre aide

Gecko62
 

Pièces jointes

  • 111_formules.xls
    75.5 KB · Affichages: 54

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA comment remplacer une chaîne qui contient des guillemets

Re,
Je m'apperçois que je ne suis pas très clair,
C'est le moins qu'on puisse penser

en voyant le fichier, je découvre qu'aucune cellule ne contient ce qui a été décrit au post#5
La chaîne à utiliser pour le remplacement est bien ="T";1;0
et elle doit être remplacée par ="T";0;0

et la formule (en vert) dans la réponse précédente est à cent lieues de tout celà

s'agit-il de modifier le contenu des cellules ou de modifier les formules contenues dans les cellules

J'ai modifié votre fichier en ce sens le mien contenant malheureusement des données confidentielles et "pesant" plus de 15 Mb
il n'est pas utile d'envoyer le fichier complet, un fichier contenant quelques données et onglets nécessaires à la compréhension du problème est suffisant
concernant les données confidentielles, il suffit de remplacer les noms de personnes par Nom1, Nom2, ................
et supprimer les éventuels logos, adresses mails, .......

à+
Philippe
 

Gecko62

XLDnaute Nouveau
Re : VBA comment remplacer une chaîne qui contient des guillemets

Une fois encore merci,

pour terminer les précisions de ma question, il s'agit de modifier les formules contenues dans les cellules

Et c'est là où je bloque :
- modifier le texte contenu dans les cellules pas de soucis ni de manière manuelle (CTRL + H), ni par VBA
- modifier les formules contenues dans les cellules pas de soucis par CTRL + H, sans solution pour moi par VBA !!!

Le fichier joint dans mon précédent message contient exactement ce qu'il faut modifier du fichier d'origine

Je ne vous dirai jamais assez merci pour votre aide

Gecko62
 

pierrejean

XLDnaute Barbatruc
Re : VBA comment remplacer une chaîne qui contient des guillemets

Bonjour Gecko62

Salut Philippe

A tester:

Code:
Sub Bouton1_Clic()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = 1 To Sheets.Count


  With Sheets(i)
    For n = 20 To 70
      Range("D" & n).Formula = Replace(Range("D" & n).Formula, "T"",1,0)))", "T"",0,0)))")
    Next
  End With
Next i
Sheets(1).Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA comment remplacer une chaîne qui contient des guillemets

Re,
pour terminer les précisions de ma question, il s'agit de modifier les formules contenues dans les cellules
maintenant que la précision est apportée, voici une solution

à+
Philippe

Edit: Bonjour PierreJean, .......... pas rafraîchi avent d'envoyer .......... même approche
 

Pièces jointes

  • 111.xls
    83.5 KB · Affichages: 39
  • 111.xls
    83.5 KB · Affichages: 48
  • 111.xls
    83.5 KB · Affichages: 53

Gecko62

XLDnaute Nouveau
Re : VBA comment remplacer une chaîne qui contient des guillemets

Un grand merci à vous deux,

Les deux solutions fonctionnent pour autant que l'on prenne le soin d'activer la feuille dans la solution de pierrejean.

La solution de pierrejean est celle que j'ai retenue, car à mon sens plus "lisible" pour un béotien comme moi, même si j'aime bien l'idée de remplacer les 4 caractères suivant la position "x" de la chaîne de caractère, la notation des colonnes en chiffres est pour moi toujours un peu perturbante.

Une fois encore merci beaucoup, nous y sommes arrivés une fois que ma question a été suffisamment claire :eek: !! Mes excuses pour les désagréments et à une prochaine.

Gecko62 :)
 

Discussions similaires

Réponses
1
Affichages
127

Statistiques des forums

Discussions
312 231
Messages
2 086 433
Membres
103 207
dernier inscrit
Michel67