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 :

Insérer une image en pied de page avec un check box [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Programmeur
    Inscrit en
    Février 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Insérer une image en pied de page avec un check box
    Bonjour, j'ai un check box qui doit insérer une image dans les pieds de page de mes feuilles Excel 2010. Mais, certaines pages n'ont pas d'images, d'autres l'ont toujours même si le Check Box est inactif. Je tourne en rond sur ce débogage, est-ce que quelqu'un pourrais m'aider ?

    PRÉCISION: au départ certaines feuilles ne devaient pas avoir l'image en pied de page, mais ce n'est plus une exigence, tout de même voici l'organisation des feuilles :

    DATA / puis 4 feuilles qui se répètent 26 fois.
    Ex.: DATA | Commande-A | Liste-A | 4x6 M-A | 4x6 A-A | Commande-B | Liste-B | 4x6 M-B | 4x6 A-B | Commande-C... ainsi de suite jusqu'à Z.

    Voici le code du Check Box puis à la fin le code de l'image qui est dans la même feuille soit DATA.
    -------------------------------------------------------------------------------
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Private Sub CheckBox1_Click() 
     Dim strPath As String 
     Dim nTotSheets As Integer 
     Dim n As Integer 
     Dim nComm As Integer 
     
     nTotSheets = ThisWorkbook.Sheets.Count 
     n = Int((nTotSheets - 2) / 4) 
     
     strPath = "C:\testfooter.jpg" 
     SavePicture Worksheets(1).Image1.Picture, strPath 
     
     For m = 1 To n 
     nComm = 4 * (m - 1) + 3 
     If Worksheets(1).Range("G7") = True Then 
     strPath = "C:\testfooter.jpg" 
     Else 
     strPath = "" 
     End If 
     With Worksheets(nComm).PageSetup 
     .RightFooterPicture.Filename = strPath 
     .RightFooter = "&G " 
     .LeftFooter = "" 
     End With 
     Next m 
     
     If Len(strPath) > 0 Then 
     Kill strPath 
     End If 
     
     nTotSheets = 0 
     nComm = 0 
    End Sub
    -----------------------------------------------------------------------------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Image1_Click() 
     
    End Sub
    ------------------------------------------------------------------------------------

    MERCI D'AVANCE

  2. #2
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    Bonjour,

    Tu peux essayer le code suivant en choisissant les valeurs des cellules G7, G8, G9, etc... de la feuille DATA parmi VRAI et FAUX:
    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
    18
    Private Sub CheckBox1_Click()
       Dim strPath As String, n As Integer, m As Integer
       n = Int((ThisWorkbook.Sheets.Count - 1) / 4)
       strPath = "C:\testfooter.jpg"
       SavePicture Worksheets(1).Image1.Picture, strPath
       For m = 0 To n - 1
          With Worksheets(4 * m + 3).PageSetup
             If Worksheets(1).Range("G" & m + 7) = True Then
                .RightFooterPicture.Filename = strPath
                .RightFooter = "&G "
                .LeftFooter = ""
             Else
                .RightFooter = ""
                .LeftFooter = ""
             End If
          End With
       Next m
    End Sub
    Toutefois, pourquoi utiliser un CheckBox plutôt qu'un CommandButton ?

    Cdt

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Programmeur
    Inscrit en
    Février 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Interrogation
    Bonjour Ben_L,
    merci pour ta réponse.

    Cela ne fonctionne toujours pas !

    Je suis novice en VB alors excuse cette question probablement basic :
    - Je ne comprends pas ("G" & m + 7) dans la condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Worksheets(1).Range("G" & m + 7) = True Then
    Dois-je remplacer "G" par la cellule VRAI/FAUX contrôlée pas mon CheckBox1 ?

    Pour ta question, je dois corriger ce formulaire créé par l'ancien programmeur, j'aurais garder le CheckBox1 pour minimiser l'impact sur les usagers, mais si c'est mieux un CommandButton, je les informerai au besoin.

    Je me demande s'il ne serait pas plus simple de forcer l'image sur toute les feuilles ?

    Merci pour ton intérêt.

    PatProg

  4. #4
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    Bonjour PatProg,

    La ligne `If Worksheets(1).Range("G" & m + 7) = True Then` permet de tester, pour chaque feuille, si celle-ci doit comporter un pied de page ou pas.

    En effet, la variable m devrait varier de 0 à 25. La correspondance entre valeur de m et onglet concerné est la suivante:
    m=0 correspond à l'onglet Liste-A
    m=1 correspond à l'onglet Liste-B
    ...
    m=25 correspond à l'onglet Liste-Z

    Ainsi la ligne citée ci-dessus permet de vérifier, pour une valeur donnée de m, quelle est la valeur de la cellule située dans l'onglet DATA, à la colonne G et à la ligne m+7.
    Autrement dit, ce sont les cellules de la colonne G de l'onglet DATA qui déterminent si un pied de page sera ajouté. La correspondance se fait comme suit:
    Onglet Liste-A <=> m=0 <=> cellule G7 de l'onglet DATA
    Onglet Liste-B <=> m=1 <=> cellule G8 de l'onglet DATA
    ...
    Onglet Liste-Z <=> m=25 <=> cellule G32 de l'onglet DATA

    Je joins à mon post un fichier exemple.
    Tout d'abord, modifie l'image dans l'onglet DATA. Pour cela affiche ses propriétés et modifie Picture (choisis l'image que tu souhaites voir apparaître dans le pied de page).
    Va ensuite voir quelques onglets Liste-#. Il n'y a aucune mise en page.
    Puis, dans l'onglet DATA, clique sur le bouton de mise à jour -> la macro s'exécute.
    Retourne voir différents onglets Liste-#. Une mise en page apparaît. Si tu fais un aperçu avant impression, tu verras l'image incluse dans l'onglet DATA apparaître en bas à gauche de la page (uniquement si VRAI a été renseigné dans l'onglet DATA évidemment).

    Ai-je bien compris ton besoin ?
    Fichiers attachés Fichiers attachés

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Programmeur
    Inscrit en
    Février 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut SUITE
    Bonjour Ben_L,
    Encore merci pour ton explication, je comprends maintenant pourquoi ça ne fonctionne pas, je n'ai qu'un checkBox1 dont la cellule liée est en G7.

    Et cela fonctionne super bien maintenant.

    Merci pour tes explications et ton temps et oui tu as bien compris mes besoins

    Sincèrement
    PatProg

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/04/2009, 18h39
  2. Insérer une image ou un texte dans un page pré-concue
    Par Mawashigeri dans le forum Langage
    Réponses: 1
    Dernier message: 01/07/2006, 11h00
  3. Insérer une image dans un fragment de page jspf
    Par ze veritable farf dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 09/05/2006, 10h43
  4. [Tkinter] Insérer une image jpg sur un canvas avec PIL
    Par Kyojimbo dans le forum Tkinter
    Réponses: 2
    Dernier message: 23/02/2006, 16h46
  5. insérer une image sur une page html sans joindre son fichier
    Par fidji dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 03/02/2006, 10h15

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