IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

apostrophe dans une macro


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Par défaut apostrophe dans une macro
    Bonjour à tous et merci à tous ceux qui contribuent à éclairer les "grands débutants" qui viennent glaner des infos sur ce forum!


    J'ai un petit pb :

    la société pour laquelle je travaille s'appelle : 3' (pour Trois Prime)

    vous notez l'apostrophe après le 3...

    Et bien mon pb se situe là, comment saisir le chemin complet dans une macro avec ce fichu " ' " qui me me plante tout.

    Je vous donne un exemple de code qui ne fonctionne pas à cause du ' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub macrocompilation()
    Range( _
            "A5:X500,Z5:AE500,AG5:AI500,AK5:AM500,AO5:AQ500,AS5:AU500,AW5:AY500,BA5:BC500,BE5:BG500,BI5:BK500" _
            ).Select
    Selection.ClearContents
    Dim X As Integer, NbFichiers As Integer, Y As Integer
    Dim Tableau() As String
    Dim Direction As String
     
    Application.ScreenUpdating = False
    Direction = Dir("C:\Users\guillaume\Desktop\3'\Médecine Générale\Logistique\Compilation\*.xls")
     
    Do While Len(Direction) > 0
    NbFichiers = NbFichiers + 1
    ReDim Preserve Tableau(1 To NbFichiers)
    Tableau(NbFichiers) = Direction
    Direction = Dir()
    Loop
    If NbFichiers > 0 Then
    Y = 4
    For X = 1 To NbFichiers
    
    If Tableau(X) <> ThisWorkbook.Name Then
    Y = Y + 1
    
    With ActiveSheet.Cells(Y, 1)
    .Formula = "=("C:\Users\guillaume\Desktop\3'\Médecine Générale\Logistique\Compilation\[" & Tableau(X) & "]Sheet1" & "'!" & "D2"
    .Value = .Value
     
    End With
    End If
    Next X
    End If
     
    
    Application.ScreenUpdating = True
    End Sub

    J4ai essayé de remplacer mes chemins par
    ThisWorkbook.Path
    ce qui serait l'idéal pour moi puisque je suis amené à changer fréquemment l'emplacement du fichier excel, mais ça ne marche pas non plus...

    une idée?

    merci d'avance

  2. #2
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    bonsoir,

    dit à ta boite de changer de nom

    j'ai fait un essai en doublant cela à l'air de passer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Formula = "='C:\Users\guillaume\Desktop\3''\Médecine Générale\Logistique\Compilation\[" & Tableau(X) & "]Sheet1" & "'!" & "D2"

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Par défaut
    Merci JackOuYA!

    oui, oui j'y ai pensé...

    J'imagine assez bien un employé de Total aller voir son pdg en lui demandant de changer le nom de la société en Totol parce que le "a" ne lui convient pas pour une raison lambda...

    malheureusement ça, ça na va pas être possible...

    D'autres idées?

    pourquoi est-ce qu'en remplacant
    C:\Users\guillaume\Desktop\3'\Médecine Générale\Logistique\Compilation
    par :
    ThisWorkbook.Path
    ça ne fonctionne pas?

  4. #4
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Ton probléme n'est pas un probléme de code VBA mais un probléme de formule excel.

    essai de creer, par copier coller de cellule (avec lien) une formule qui marche, et affiche la dans VBE en te plaçant sur la cellule puis dans fenêtre exécution tu tape "debug.print ActiveCEll.Formula"
    et ensuite on pourra comparer la formule que tu génére à celle que tu dois générer..

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Par défaut
    Re JackOuYA


    En fait il n'y a pas de problème de formule dans mon fichier!

    Tout fonctionne parfaitement dès lors que je place mon fichier en dehors du dossier nommé " 3' " et que je n'ai donc pas " 3' " dans le chemin dans ma macro.


    Le problème c'est que ce dossier " 3' " est le dossier partagé de ma boite et que je ne peux ni modifier son nom ni me passer de mettre mon fichier dans ce dossier...

    Encore une fois ne peut-on par remplacer, normalement, un chemin absolu par ThisWorkbook.Path

    ou faire en sorte que l'apostrophe soit prise en compte comme du texte et pas comme un bout d'expression?

    Merci en tout cas de te pencher sur mon pb!

  6. #6
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Tu n'as pas compris ce que je veux dire au lieu de te battre avec VBA pour écrire ta formule, regarde ce qu'écrit excel lorsque tu fais cela directement dans excel, et tu verra qu'il y as bien un probléme de formule, il me semble qu'excel double les ' ce que tu ne fais pas .

  7. #7
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    Essaie de remplacer ta chaine par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Replace(ThisWorkbook.Path ,"'","''")

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour ,

    1) pas d'espace devant un nom de répertoire ! (windows l'otera de toutes manières)

    2)
    regarde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      chemin = "C:\Users\guillaume\Desktop\3'\Médecine Générale\Logistique\Compilation\"
       filtre = "*.xls"
       direction = Dir(chemin & filtre, vbNormal Or vbHidden)
       Do While direction <> ""
          nbfichiers = nbfichiers + 1
         Direction = Dir
       Loop
       MsgBox nbfichiers
    (ce qui interfèrera bien évidemment avec tout ce qui suit et qui utilise nbfichiers !)

  9. #9
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    re..
    Sauf que ...
    avec ce qu'il a écrit : nbfichiers est vide ...
    Alors ?
    Alors ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For X = 1 To NbFichiers
    ma foi ...

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Excuse (fatigué)

    Avec ce qu'il a écrit ===>> nbfichiers = 0 (essaye)

    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For X = 1 To NbFichiers
    sera traduit par
    et il ne passera donc jamais par le reste ...
    Est-ce suffisamment clair ainsi ?

  11. #11
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Excuse (fatigué)

    Avec ce qu'il a écrit ===>> nbfichiers = 0 (essaye)

    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For X = 1 To NbFichiers
    sera traduit par
    et il ne passera donc jamais par le reste ...
    Est-ce suffisamment clair ainsi ?
    Ben... non, puisque le FOR est dans un IF qui teste si NbFichier > 0
    Le For x=1 to 0 ne peut donc se produire.
    Je postule pour la raison de JackOuYa...

  12. #12
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    je me fais visiblement mal comprendre ...
    Citation, donc :
    dehors du dossier nommé " 3' " et que je n'ai donc pas " 3' "
    On voit bien là un espace entre le " et le 3 (2 fois).
    Ma crainte est qu'il ait également reproduit cet espace dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Direction = Dir("C:\Users\guillaume\Desktop\3'\Médecine Générale\Logistique\Compilation\*.xls")
    (bien que là, on ne voie plus d'espace).
    Car, si tel était le cas : nbfichiers serait = 0 ...

  13. #13
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    En copiant la chaine de son Dir, je ne vois aucun espace.
    Et, je suppose qu'il ne s'est pas amusé à recopier tout son code et s'est contenté d'un copier-coller.
    J'aurai donc plus tendance à croire en son code qu'en ses citations.

    Et, dans tous les cas, il ne serait jamais arrivé jusqu'au FOR puisqu'il aurait été intercepté par le IF. Ceci ne ressort pas de ta remarque précédente, et c'est pour cela que je suis intervenu ici. C'est tout. Il ne POUVAIT pas atteindre le FOR si NbFichiers était = 0, contrairement à ce que laisse penser ton commentaire.

  14. #14
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Citation Envoyé par JackOuYA Voir le message
    bonsoir,

    dit à ta boite de changer de nom

    j'ai fait un essai en doublant cela à l'air de passer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Formula = "='C:\Users\guillaume\Desktop\3''\Médecine Générale\Logistique\Compilation\[" & Tableau(X) & "]Sheet1" & "'!" & "D2"
    Je viens de me "taper" la création complète de ton arborescence sur mon disque pour tester et ce code fonctionne bien .!!

    NOTA :
    Et donc si tu as bien des fichiers (ce qui me semble évident malgrés les dires de UC) sous ce répertoire Compilation ton code devrai fonctionner en modifiant cette ligne .

  15. #15
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    Citation Envoyé par gui333 Voir le message
    Encore une fois ne peut-on par remplacer, normalement, un chemin absolu par ThisWorkbook.Path
    Si ! si ! Je t'ai donné une solution de remplacement de ' par des '' dans le ThisWorkBook.Path un peu au-dessus

Discussions similaires

  1. problème avec l'apostrophe dans une requête
    Par mika0102 dans le forum VBA Access
    Réponses: 7
    Dernier message: 09/03/2019, 16h51
  2. Evaluer une apostrophe dans une Macro-condition
    Par Eto Demerzel dans le forum Macro
    Réponses: 5
    Dernier message: 03/04/2015, 17h17
  3. Nombre de mots dans une macro-variable avec apostrophe
    Par Claudia(y) dans le forum Macro
    Réponses: 2
    Dernier message: 20/10/2013, 20h15
  4. pb dans une macro excel VB
    Par syl221 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/10/2005, 17h29
  5. Données contenant un apostrophe dans une colonne
    Par david71 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/09/2005, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo