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 19/01/2012, 14h13   #1
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 246
Points : 83
Points : 83
Par défaut Fonction IF qui ne fonctionne pas

Bonjour à tous,

Le code suivant ne fonctionne pas :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 'En tête et pied de page des feuilles
        If Commentaire = "" Then 'Si pas de commentaire alors pied de page vide
            For x = 1 To Sheets.Count
                With Sheets(x).PageSetup
                    .CenterHeader = "&B&14&""Arial""" & E & Chr(10) & "&12&B&A" 'nom échantillon, nom de la feuille en arial gras 12
                    .RightHeader = "&8&""Arial""" & "Masse pastille = " & M & " mg (m&YThéo.&Y=20mg)" & Chr(10) & "PAF échantillon = " & P & " %" & Chr(10) & "Surface pastille = " & S & " mm&X2&X (S&YThéo.&Y=201mm&X2&X)"
                End With
            Next x
        Else 'si commentaire alors pied de page = commentaire
            For x = 1 To Sheets.Count
                With Sheets(x).PageSetup
                    .CenterHeader = "&B&14&""Arial""" & E & Chr(10) & "&12&B&A" 'nom échantillon, nom de la feuille en arial gras 12
                    .RightHeader = "&8&""Arial""" & "Masse pastille = " & M & " mg (m&YThéo.&Y=20mg)" & Chr(10) & "PAF échantillon = " & P & " %" & Chr(10) & "Surface pastille = " & S & " mm&X2&X (S&YThéo.&Y=201mm&X2&X)"
                    .LeftFooter = "&10&B&""Arial""" & "Commentaire :&B " & C
                End With
            Next x
        End If
Le but de cette fonction est d'avoir, en pied de page, le champ "Commentaire :" suivi de la valeur de la textbox (variable C) si la textbox n'est pas vide à l'inverse si la textbox est vide je ne veux pas de pied de page.

Or dans le cas où la textbox est vide j'ai le champ commentaire (suivi de rien) qui apparaît en pied de page. Et de la même manière, j'ai le champ Commentaire sans la valeur de la textbox C en pied de page si ma Combobox n'est pas vide.

Je suppose que mon erreur vient dans la déclaration de : "Textbox=vide"

A noter que ma textbox est intitulé Commentaire et que J'ai C=Commentaire.Text avec C défini en Public C as String

Merci pour votre aide
__________________
Bonne journée,

Cordialement,

Vincent
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 14h37   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Au cas où commentaire="" il faudrait indiquer .LeftFooter à vide

Et avec une seule boucle
Code :
1
2
3
4
5
6
7
8
9
10
11
For x = 1 To Sheets.Count
    With Sheets(x).PageSetup
        .CenterHeader = "&B&14&""Arial""" & E & Chr(10) & "&12&B&A"    'nom échantillon, nom de la feuille en arial gras 12
        .RightHeader = "&8&""Arial""" & "Masse pastille = " & M & " mg (m&YThéo.&Y=20mg)" & Chr(10) & "PAF échantillon = " & P & " %" & Chr(10) & "Surface pastille = " & S & " mm&X2&X (S&YThéo.&Y=201mm&X2&X)"
        If Commentaire <> "" Then                 'Si pas de commentaire alors pied de page vide
            .LeftFooter = "&10&B&""Arial""" & "Commentaire :&B " & C
        Else
            .LeftFooter = ""
        End If
    End With
Next x
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/01/2012, 16h28   #3
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 246
Points : 83
Points : 83
ça ne fonctionne pas.

à présent, aussi bien lorsque la textbox est pleine, que lorsqu'elle est vide, je n'ai plus du tout de pied de page.

Enfin lorsqu'elle est vide c'est normal (c'est ce que je veux !)
__________________
Bonne journée,

Cordialement,

Vincent
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 16h48   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Tu nous pose une partie du code et j'avais expliqué que lorsque tu ne veux pas le pied de page, tu ne dois pas oublier de mettre
Pour "effacer" le pieds de page éventuellement existant.

A toi d'adapter le tout dans ton code
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/01/2012, 17h02   #5
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 246
Points : 83
Points : 83
Je ne comprends pas ce que tu essayes de me dire.

Citation:
Tu nous pose une partie du code et j'avais expliqué que lorsque tu ne veux pas le pied de page, tu ne dois pas oublier de mettre
Code :Sélectionner tout - Visualiser dans une fenêtre à part
.LeftFooter=""
Pour "effacer" le pieds de page éventuellement existant.

A toi d'adapter le tout dans ton code
J'ai réessayer avec le code que tu m'as fourni :

Code :
1
2
3
4
5
6
7
8
9
10
11
For x = 1 To Sheets.Count
    With Sheets(x).PageSetup
        .CenterHeader = "&B&14&""Arial""" & E & Chr(10) & "&12&B&A"    'nom échantillon, nom de la feuille en arial gras 12
        .RightHeader = "&8&""Arial""" & "Masse pastille = " & M & " mg (m&YThéo.&Y=20mg)" & Chr(10) & "PAF échantillon = " & P & " %" & Chr(10) & "Surface pastille = " & S & " mm&X2&X (S&YThéo.&Y=201mm&X2&X)"
        If Commentaire <> "" Then                 'Si pas de commentaire alors pied de page vide
            .LeftFooter = "&10&B&""Arial""" & "Commentaire :&B " & C
        Else
            .LeftFooter = ""
        End If
    End With
Next x
Mais l, il me supprime le pied de page même lorsque j'indique quelque chose dans la textbox commentaire.

Il est possible que mon erreur vienne de l'userform ou de la déclaration des variables (que j'ai du mal à maîtriser), alors voici le code derrière le bouton valider de mon userform :

Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub Valider_Click()
E = Echantillon.Text
M = Masse.Value
P = PAF.Value
S = Surface.Value
C = Commentaire.Text
    'Importation des données entrées dans l'userform pour la macro
    Call Vinvin 'Appelle macro
 
    Unload UserForm1    'action de fermeture de l'userform
End Sub
avec :

Code :
1
2
3
4
5
Public E As String
Public M As String
Public P As String
Public S As String
Public C As String
Merci pour ton aide Mercatog
__________________
Bonne journée,

Cordialement,

Vincent
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 17h36   #6
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 696
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 696
Points : 1 448
Points : 1 448
Bonjour,

Essaie en remplaçant
Code :
If Commentaire <> "" Then
par
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/01/2012, 08h04   #7
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 246
Points : 83
Points : 83
Bonjour,

J'avais déjà essayé et ça ne fonctionne pas j'ai également essayé ceci qui ne fonctionne pas :

Code :
1
2
3
4
5
6
7
8
9
10
11
For x = 1 To Sheets.Count
    With Sheets(x).PageSetup
        .CenterHeader = "&B&14&""Arial""" & E & Chr(10) & "&12&B&A"    'nom échantillon, nom de la feuille en arial gras 12
        .RightHeader = "&8&""Arial""" & "Masse pastille = " & M & " mg (m&YThéo.&Y=20mg)" & Chr(10) & "PAF échantillon = " & P & " %" & Chr(10) & "Surface pastille = " & S & " mm&X2&X (S&YThéo.&Y=201mm&X2&X)"
        If Commentaire <> "" Then                 'Si pas de commentaire alors pied de page vide
            .LeftFooter = "&10&B&""Arial""" & "Commentaire :&B " & Commentaire
        Else
            .LeftFooter = ""
        End If
    End With
Next x
Avec C=Commentaire.Value au lieu de C=Commentaire.Text

D'autres idées ?
__________________
Bonne journée,

Cordialement,

Vincent
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 09h37   #8
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 696
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 696
Points : 1 448
Points : 1 448
Bonjour,

De mon coté, la procédure fonctionne correctement avec les éléments apportés précédemment.
Essaie de voir ce qui diffère avec le fichier test.

Cordialement.
Fichiers attachés
Type de fichier : xls Classeur2.xls (57,0 Ko, 1 affichages)
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/01/2012, 09h43   #9
Membre éprouvé
 
Homme Franck PRESSE
Inscription : août 2010
Messages : 202
Détails du profil
Informations personnelles :
Nom : Homme Franck PRESSE
Âge : 38
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : août 2010
Messages : 202
Points : 444
Points : 444
Bonjour à tous,

Excusez l'incruste...
Je pense à une erreur "naïve"...

C'est quoi "Commentaire"?
Le nom attribué, via la propriété Name, à un TextBox? Ou juste l'étiquette, Label, placé à côté de ce textbox dans ton USF? Ou autre chose encore...

Suggestions :
- sous VBE, vérifier la propriété Name du TextBox correspondant.
- Si le nom du TextBox est bien Commentaire, placer un MsgBox juste avant la ligne If commentaire, et ajouter des .Value (ou .Text) :
Code :
1
2
MsgBox Commentaire.Value
If Commentaire.Value <> "" Then
remplir le TextBox et tester
__________________
Cordialement,
Franck P.


Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...
pijaku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 10h32   #10
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 246
Points : 83
Points : 83
Bonjour Pijaku,

Merci pour ton aide.

J'aurai pu faire cette erreur (étourdi et débutant comme je suis), mais ce n'est pas le cas. Ma textbox a bien le nom commentaire (propriétés=> (Name)=> Commentaire)

je vais essayer tes suggestions . Value et . Text

Citation:
Je pense à une erreur "naïve"...

C'est quoi "Commentaire"?
Le nom attribué, via la propriété Name, à un TextBox? Ou juste l'étiquette, Label, placé à côté de ce textbox dans ton USF? Ou autre chose encore...
L'erreur est pire que ça

C= 2 variables différentes

Bon je change ça et je vous dis si ça fonctionne
Désolé à tous et merci beaucoup pour votre aide
__________________
Bonne journée,

Cordialement,

Vincent
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 12h48   #11
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 246
Points : 83
Points : 83
Merci à tous,

et désolé de vous avoir fait perdre votre temps.

Ca fonctionne correctement
__________________
Bonne journée,

Cordialement,

Vincent
Vincent32 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 +2. Il est actuellement 02h36.


 
 
 
 
Partenaires

Hébergement Web