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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Points : 35
    Points
    35
    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 éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    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

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    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 éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    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

  5. #5
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    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 chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

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

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

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    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

  8. #8
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    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 éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    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

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Points : 35
    Points
    35
    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