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 :

Fonction IF qui ne fonctionne pas


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut Fonction IF qui ne fonctionne pas
    Bonjour à tous,

    Le code suivant ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Au cas où commentaire="" il faudrait indiquer .LeftFooter à vide

    Et avec une seule boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    ç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 !)

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    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

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    Je ne comprends pas ce que tu essayes de me dire.

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Essaie en remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Commentaire <> "" Then
    par
    Cordialement.

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  8. #8
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    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 Fichiers attachés

  9. #9
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox Commentaire.Value
    If Commentaire.Value <> "" Then
    remplir le TextBox et tester

  10. #10
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    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

    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

  11. #11
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    Merci à tous,

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

    Ca fonctionne correctement

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

Discussions similaires

  1. Fonction recursive qui ne fonctionne pas
    Par Hightuxdotnet dans le forum Langage
    Réponses: 3
    Dernier message: 18/02/2009, 16h38
  2. fonction confirm() qui ne fonctionne pas sur IE7
    Par JackBeauregard dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/06/2008, 09h47
  3. Fonction mysql qui ne fonctionne pas pour un ancien postgreIste
    Par floreasy dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 15/01/2008, 18h49
  4. [SQL] Fonction SUM qui ne fonctionne pas !
    Par nigg4z dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 11/10/2007, 16h20
  5. Fonction While {} qui ne fonctionne pas
    Par zoom61 dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2006, 12h17

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