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 :

Formatage de string troublant


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Par défaut Formatage de string troublant
    J'ai écrit le code ci-dessous et je voudrais que ça fonctionne je sais que le problème vient du formatage du string qui contient certain charactères spéciaux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub reset_archive_warning()
     
        ActiveWorkbook.Unprotect Password:=""
        ActiveSheet.Unprotect Password:=""
     
        Range("Z1").Select
        ActiveCell.Formula = "IF(E2=1, "Ce rapport n'a pas été archivé", "this report has not been archived")"
        Selection.Interior.ColorIndex = 3
     
        ActiveSheet.Protect Password:=""
        ActiveWorkbook.Protect Password:=""
     
    End Sub
    Comme vous devinez la langue de la phrase contenue dans la cellule Z1 change en fonction du nombre inscrit en E2, je dois donc enter une formule IF via Activecell.formula.
    Je pourrais gèrer le IF via le script mais je ne veux pas, car Excel traque les changement pas mon script. J'aimerais donc savoir comment entrer ma formule dans une cellule via un script, comment formatter la phrase.

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 098
    Par défaut
    Salut
    En règle général, face a ce type de problème il faut doubler les " pour que vba les interprète comme faisant parti du texte

    essais comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Formula = "IF(E2=1, ""Ce rapport n'a pas été archivé"", ""this report has not been archived"")"
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonsoir,
    Je te comprend moi aussi je peux être troublé par un string mais trop ca fait vulgaire
    En gros tu as besoin de mettre " dans ta chaine de caractère tu peux mettre ""
    ou alors chr(34)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    msgbox "ceci "" est une guillemets"
    msgbox "ceci " & chr(34) & est une guillemet"
    Ca devrais fonctionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "IF(E2=1, "3Ce rapport n'a pas été archivé"3, "3this report has not been archived"3)"
    Par contre pour ton information il est tout a fait possible de "traquer" les changement d'une feuille avec une macro

    evènement change de worksheet un petit tuto a ce propos
    http://silkyroad.developpez.com/VBA/EvenementsFeuille/
    ou pour tous les onglet
    http://silkyroad.developpez.com/VBA/...asseur/#LII-20

    Maintenant a toi de choisir ce que tu préfères

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 098
    Par défaut
    Re
    Il me semblait bien qu'il y avait un truc qui cloché, ton code est faut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Feuil2.[A1].Formula = "=IF(E2=1, ""Ce rapport n'a pas été archivé"", ""this report has not been archived"")"
    Tu as oublié de mettre le = au début de ta formule, ça ne pouvait pas fonctionner ainsi :p

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Par défaut
    Je dirais aussi qu'il faut remplacer les virgules qu'on utilise en VBA par des points virgules qu'on utilise dans les fonctions directement sur les feuilles, non?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil2.[A1].Formula = "=IF(E2=1; ""Ce rapport n'a pas été archivé""; ""this report has not been archived"")"

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Effectivement ca me fait deux erreurs, il était vraiment troublant ce string et pas vulgaire pour deux sous

  7. #7
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 098
    Par défaut
    Salut

    hé non julien26, il ne faut pas mettre des ";", vbe va interpreter les "," et c'est lui qui se charge de la conversion
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  8. #8
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    vous pouvez mettre des ";" dans une FormulaLocal (pour les français avec un SI)
    et des "," dans une Formula (pour tous avec un IF).

  9. #9
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 098
    Par défaut
    Salut
    Ha oki, je n'avais jamais fait le distinguo entre formula et formulalocal, c'est chose faite. Merci pour l'info.
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Par défaut
    Voilà résolu à l'aide des double " dans le string.

    C'est honnêtement anti-intuitif mais vba ne fait pas dans l'intuitif de toute façons.

    Merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. formatage de string
    Par moham104 dans le forum Général Python
    Réponses: 2
    Dernier message: 10/10/2011, 18h03
  2. Formatage particulier String
    Par mimic50 dans le forum MATLAB
    Réponses: 3
    Dernier message: 29/08/2006, 15h25
  3. [WinForms]Formatage de date en string
    Par Jinroh77 dans le forum Général Dotnet
    Réponses: 7
    Dernier message: 03/08/2006, 18h07
  4. formatage d'une requete sql dansun string
    Par tchoua dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 25/07/2006, 12h25
  5. formatage d'un string
    Par mmz dans le forum Langage
    Réponses: 6
    Dernier message: 03/05/2006, 11h04

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