Remplacer les apostrophes dans des libellés par des doubles quote

Sissou71

XLDnaute Occasionnel
Bonjour,

J'ai un fichier Excel qui permet de mettre en place un sondage et crée la requête SQL dans une ligne. Je voudrais que dans les champs remplis par le créateur du sondage, les apostrophes soient remplacées par des double quote de manière à ce que la requête SQL fonctionne.

Cf fichier joint, les données remplies par le créateur du sondage sont les colonnes A à D et la requête SQL s'écrit en colonne F

Merci pour votre aide
 

Pièces jointes

  • DoubleQuote.xlsx
    10.1 KB · Affichages: 64

Sissou71

XLDnaute Occasionnel
Re : Remplacer les apostrophes dans des libellés par des doubles quote

En fait ce sont les apostrophes que le créateur du sondage mettra dans lezs colonnes A à D que je souhaiterai modifier par macro car je ne sait pas ou elles seront placées. Mais si je comprends bien votre réponse dans l'insert into vous doublez les quotes de manière à ce qu'il prenne les cellules comme du texte ? Je vais essayer, merci/
 

Sissou71

XLDnaute Occasionnel
Re : Remplacer les apostrophes dans des libellés par des doubles quote

En relisant la formule, ca ne correspond pas à ce que je recherche car il me faut des quotes autour des valeurs dans la requête SQL, et donc dès qu'il rencontre une apostrophe, il la prend comme une quote.
 

Gelinotte

XLDnaute Accro
Re : Remplacer les apostrophes dans des libellés par des doubles quote

Bonjour,

Peux-tu écrire cette ligne comme le résultat que tu désires ?

INSERT INTO questions (id, title, text, section ) VALUES ('1', 'Utilisation', 'Envisagez-vous d’utiliser un autre Navigateur ?', 'Informatique');


G
 

Sissou71

XLDnaute Occasionnel
Re : Remplacer les apostrophes dans des libellés par des doubles quote

Le résultat que je désire est le suivant : INSERT INTO questions (id, title, text, section ) VALUES ('1', 'Utilisation', 'Envisagez-vous d’'utiliser un autre Navigateur ?', 'Informatique');
Remplacer le d apostrophe de "Envisagez-vous d'utiliser..." par une double quote ""Envisagez-vous d''utiliser..."
 

Sissou71

XLDnaute Occasionnel
Re : Remplacer les apostrophes dans des libellés par des doubles quote

Merci,

En fait je ne souhaite pas toucher à la colonne F qui correspond à la requête dans la section VALUE je dois avoir des quote (') autour des valeurs contenues dans les cellules A2, B2, C2 et D2 comme ceci : VALUES ('1', 'Utilisation', 'Envisagez-vous d’'utiliser un autre Navigateur ?', 'Informatique');

Quand dans une des cellules A à D, le texte contient une apostrophe, celle-ci doit être remplacer par une double quote ('') mais pas un guillemet

Je souhaite juste trouver une macro qui traite les apostrophes dans les colonnes A à D.

Ce fichier à pour but de générer des sondages régulièrement et la requête SQL assocviée pour affichage du sondage dans un navigateur internet. Les contenues des cellules A à D peuvent changer. J'ai mis un exmple avec 5 lignes mais le fichier réel en contient 100.

Ce qui m'intéresse c'est traiter les apostrophes dans les colonnes A à D, sans toucher à la colonne F vu que la requête est correcte.
 

Gelinotte

XLDnaute Accro
Re : Remplacer les apostrophes dans des libellés par des doubles quote

Bonjour,

Examine ce fichier s'il peut convenir.

Il prend en charge un nombre de lignes dynamique vérifié sur la colonne A.

Il gère les ' et les ’ car sur ma machine l'apostrophe est ' et non ’

Il remplace ' et ’ à par '' si j'ai bien compris.

La macro s'exécute si on change de cellule dans les colonnes B, C et D seulement.


G
 

Pièces jointes

  • DoubleQuote(2).xlsm
    20.7 KB · Affichages: 66

Sissou71

XLDnaute Occasionnel
Re : Remplacer les apostrophes dans des libellés par des doubles quote

C'est exactement ce que je recherche ! Merci beaucoup !

Par contre je comprends en partie la macro mais je ne comprends pas tout. Serait-il possible quand vous aurez un peu de temps de m'expliquer les différentes étapes de la macro ?
 

Gelinotte

XLDnaute Accro
Re : Remplacer les apostrophes dans des libellés par des doubles quote

Allô Sissou71!

Voici deux versions corrigées suite à ton message privé.

Ai-je bien compris que tu préférerais que la macro ne s'exécute pas automatiquement, mais à partir d'un bouton ??


DoubleQuote(4) > La macro s'exécute automatiquement si le curseur est dans les colonnes B, C ou D.

DoubleQuote(5 avec bouton) > La macro ne d'exécute que si on clique sur le bouton que j'ai ajouté.

Désolé pour les p'tits bugs de l'autre jour. :eek: :rolleyes:


G
 

Pièces jointes

  • DoubleQuote(4).xlsm
    22.7 KB · Affichages: 59
  • DoubleQuote(5 avec bouton).xlsm
    27.1 KB · Affichages: 66

Sissou71

XLDnaute Occasionnel
Re : Remplacer les apostrophes dans des libellés par des doubles quote

Bonjour,

Merci pour ces 2 versions. Ce qui me perturbe dans le code proposé c'est qu'on répète les actions pour chaque colonne, j'ai essayé de faire une sélection pour toutes les colonnes dont j'ai besoin mais forcément la macro n'est pas correcte et du coup je me retrouve avec au moins 4 '''' a chaque fois qu'il en trouve une. Quelqu'un saurait comment faire en sorte que quand il a changé une fois il ne revienne pas dessus ?

Voici mon code :

Sub DoubleQuote()
'
' DoubleQuote Macro
' Remplace les apostrophes par des doubles quotes
'
Dim Cell As Variant
'
Range("B3:H200").Select

For Each Cell In Selection
Cell.Value = Replace(Cell.Value, "’", "''")
Next Cell

For Each Cell In Selection
Cell.Value = Replace(Cell.Value, "'", "''")
Next Cell

End Sub
 

Gelinotte

XLDnaute Accro
Re : Remplacer les apostrophes dans des libellés par des doubles quote

Bonjour,

Il y a presque autant de façon d'écrire du code que de codeux.

Il est bien vrai que la façon que tu désires est plus parcimonieuse en ligne de code et tout aussi efficace malgré un cadre plus strict sur la plage traitée.

Testé ...

Code:
Private Sub CommandButton1_Click()
Dim U As Byte
Dim Cel As Variant
Application.ScreenUpdating = False
With Sheets("Données")
   Range("B3:H200").Select
   For Each Cel In Selection
      U = InStr(Cel, "''")
      If U = 0 Then Cel.Value = Replace(Cel, "'", "''")
      If U = 0 Then Cel.Value = Replace(Cel, "’", "''")
   Next Cel
End With
Range("B3").Select
End Sub

Edit : J'ai enlevé : Dim X as Integer ... car ce n'était plus pertinent.


G
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 071
Membres
104 020
dernier inscrit
Mzghal