Problème pour mon 1er VBA

Jérémie

XLDnaute Nouveau
Voici mon premier essai avec VBA réalisé grâce aux 7 leçons de JMG. Merci JMG !

Sub Imprimenomenclature()
If Range('O2').Value = VRAI Then
Msg = ' Il y a une incohérence entre les options choisies ! '
Style = vbCritical
Title = ' Attention ! '
Réponse = MsgBox(Msg, Style, Title, Help, Context)
Else
Range('O2').Value = FAUX
Sheets('Nomenclature').Select
Selection.AutoFilter Field:=1, Criteria1:='<>'
ActiveWindow.SelectedSheets.PrintPreview
Sheets('Formulaire').Select
End If
End Sub
--------------------------------------------------------
Private Sub CommandButton2_Click()
Imprimenomenclature
End Sub
--------------------------------------------------------

Ca marche mais le problème c'est qu'après avoir exécuté les lignes

Sheets('Nomenclature').Select
Selection.AutoFilter Field:=1, Criteria1:='<>'
ActiveWindow.SelectedSheets.PrintPreview
Sheets('Formulaire').Select

ça me supprime la formule contenue en O2 qui me donne le résultat VRAI ou FAUX.
Comment puis-je faire pour garder cette formule en O2 ?
Merci d'avance.
 

mutzik

XLDnaute Barbatruc
Jérémie,

Je me trompe peut-être, mais il y a une incohérence dans ton critère

tu dis Criteria1:='<>' oui mais différent de QUOI ????

joins le fichier (moins de 50 ko nomdu fichier = test.zip)

à+
Bertrand
 

Jérémie

XLDnaute Nouveau
Merci bertrand

En fait le critère ='<>' je pense que c'est différent de vide. Je l'ai récupéré sur une macro que j'ai faite avec l'outils enregistrer une macro.
Par contre je n'ai pas trouvé ton fichier test.zip en pièce jointe. oubli ?
 
I

IEIAZEL

Guest
Je débute complétement sur le sujet, je ne maîtrise pas super le language en plus...
Mais j'ai retravaillé une macro hier avec un ami.... Et avec logique on a tenté de contourner...

et pour le principe différent de vide, on a contourné le problème en mettant
If Not .....=''

Ex : If Not Range () = '' then
Et cela a marché.....

Est ce que cela peut aider ?
A confirmer si c'est vraiment cela .. en tout cas sur le principe c bon LOOOL

Bon courage à toi.
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Il y a un petit truc que je ne comprends pas

tu dis que tu as une formule en O2 qui te mets VRAI ou FAUX

mais dans ton code tu mets

Else
Range('O2').Value = FAUX

donc cela veut dire que lorsque tu n'as pas VRAI dans ta cellule tu retires la formule pour mettre FAUX en dur

Donc je pense que cette ligne là (Range('O2').Value = FAUX) ne sert strictement à rien si de toute façon tu ne peux avoir que VRAI ou FAUX dans ta cellule O2 par ta formule

Bon courage
 

Jérémie

XLDnaute Nouveau
Merci pour ton aide IEIAZEL

Comme toi je suis débutant...
En fait ça marche mon truc Criteria1:='<>'
Mon problème c'est qu'après avoir exécuté ce petit programme ça m'efface le contenu de la cellule O2 (formule qui me donne le résultat VRAI ou FAUX)

Encore merci et bon apprentissage avec VBA
 

Jérémie

XLDnaute Nouveau
Merci Pascal76, je comprend mieux maintenant pourquoi ça me supprimé ma formule. Du coup, as-tu une solution facile pour afficher un message d'erreur dans une boite de message lorsque le résultat de ma formule en O2 est 'FAUX' et que lorsqu'il est 'VRAI' ça exécute les lignes :

Sheets('Etiquettes').Select
Selection.AutoFilter Field:=1, Criteria1:='<>'
ActiveWindow.SelectedSheets.PrintPreview
Sheets('Formulaire').Select

???
Merci pour ton aide précieuse !
 

PascalXLD

XLDnaute Barbatruc
Modérateur
RE

si c'est faux tu as le message que tu avais donné dans ton premier post
si c'est vrai tu le code de ton dernier post

Sub Imprimenomenclature()
If Range('O2').Value = 'FAUX' Then
Msg = ' Il y a une incohérence entre les options choisies ! '
Style = vbCritical
Title = ' Attention ! '
Réponse = MsgBox(Msg, Style, Title, Help, Context)
Else
Sheets('Etiquettes').Select
Selection.AutoFilter Field:=1, Criteria1:='<>'
ActiveWindow.SelectedSheets.PrintPreview
Sheets('Formulaire').Select
End If
End Sub
 
J

Jérémie

Guest
Yahooouuuuu !!! ça marche !! Merci Pascal !

J'ai juste changé
If Range('O2').Value = 'FAUX' Then
en
If Range('O2').Value = FAUX Then

et ça marche nickel ! C'est trop bien...
Si j'ai bien compris 'Else' signifie 'si non'. C'est ça hein ?

T'en qu'on y est voici une autre question :
Imaginons qu'en A1:A20 j'ai 20 prix différents du genre 12.30€ ect... et que je veuille appliquer une hausse de 5% à tous ces prix en une seule opération. Comment je fais-je ?
Encore merci pour ton coup de pouce.
 

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 075
Membres
103 111
dernier inscrit
Eric68350