Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 30/06/2009, 20h01   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2009
Messages : 45
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 45
Points : 11
Points : 11
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 :
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.
needlesurfer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 21h43   #2
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 431
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 31
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 431
Points : 4 042
Points : 4 042
Envoyer un message via MSN à Qwazerty
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 :
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
HammerFest
Score PowerBall Gyroscope Green : 11847
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 21h48   #3
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
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 :
1
2
msgbox "ceci "" est une guillemets"
msgbox "ceci " & chr(34) & est une guillemet"
Ca devrais fonctionner
Code :
"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
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 21h58   #4
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 431
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 31
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 431
Points : 4 042
Points : 4 042
Envoyer un message via MSN à Qwazerty
Re
Il me semblait bien qu'il y avait un truc qui cloché, ton code est faut
Code :
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
HammerFest
Score PowerBall Gyroscope Green : 11847
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 14h40   #5
Membre régulier
 
Inscription : octobre 2008
Messages : 223
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 223
Points : 76
Points : 76
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 :
Feuil2.[A1].Formula = "=IF(E2=1; ""Ce rapport n'a pas été archivé""; ""this report has not been archived"")"
neiluj26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 14h47   #6
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
Effectivement ca me fait deux erreurs, il était vraiment troublant ce string et pas vulgaire pour deux sous
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 17h47   #7
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 431
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 31
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 431
Points : 4 042
Points : 4 042
Envoyer un message via MSN à Qwazerty
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
HammerFest
Score PowerBall Gyroscope Green : 11847
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 18h10   #8
Expert Confirmé Sénior

 
Avatar de cafeine
 
Inscription : juin 2002
Messages : 3 880
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 3 880
Points : 4 489
Points : 4 489
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).
__________________
Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème

Développez une application de gestion des comptes bancaires dans Access de A à Z
Déjà 12 tutoriels, le dernier en date : Comment faire un TextBox auto-extensible dans un formulaire ?


cafeine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 23h09   #9
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 431
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 31
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 431
Points : 4 042
Points : 4 042
Envoyer un message via MSN à Qwazerty
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
HammerFest
Score PowerBall Gyroscope Green : 11847
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2009, 19h31   #10
Candidat au titre de Membre du Club
 
Inscription : avril 2009
Messages : 45
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 45
Points : 11
Points : 11
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
needlesurfer est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 13h05.


 
 
 
 
Partenaires

Hébergement Web