XL 2021 Reporter la valeur d'une cellule dans le pied de page.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonjour à tous,
J'ai une liste de 363 adhérents qui doivent s'acquitter d'une cotisation annuelle. Mais il y a toujours des retardataires qu'il faut relancer. J'ai donc construit une macro pour identifier ces mauvais payeurs dans un tableau qui comporte 450 lignes dont 363 remplies. En fin de tableau (ligne 452), une cellule totalise le nbre de lignes triées. Dans mon cas, le résultat est 15 (formule : =SOUS.TOTAL(3;F4:F450)).
Sub IMPAYES()
'
' impayés Macro
'

'

ActiveSheet.Unprotect
With ActiveSheet.PageSetup
.LeftHeader = "&K002060" & "Ass JARDINS FAMILIAUX LAVAL"
.CenterHeader = "&B&12&KC00000&""Arial""IMPAYES (tous sites confondus)"
.LeftFooter = "&B&K002060" & " Emetteur : Trésorier(e)"
.RightFooter = "&B" & "page &P / &N" & " "
.CenterFooter = "&B&KC00000" & "Nombre impayés :" & Range("F452").Value
.RightHeader = "&B&K002060" & Format(Date, "dddd dd mmmm yyyy") & " "
.TopMargin = Application.InchesToPoints(1) ' Marge haut
.LeftMargin = Application.InchesToPoints(0.3)
.RightMargin = Application.InchesToPoints(0.3)

.Orientation = xlLandscape
.Draft = False
.Zoom = 100
End With


ActiveSheet.Range("$A$1:$CT$450").AutoFilter Field:=5, Criteria1:="<>"
ActiveSheet.Range("$A$1:$CT$450").AutoFilter Field:=15, Criteria1:="="
ActiveWindow.SmallScroll Down:=-129
ActiveSheet.Rows("2:3").Hidden = False
ActiveWindow.SelectedSheets.PrintPreview
'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

La première partie concerne la mise en page et la deuxième le tri proprement dit. Quand je lance ma macro, le tri de fait et le résultat s'affiche grâce à "ActiveWindow.SelectedSheets.PrintPreview". Présentation nickel mais le résultat du tri en pied de page affiche le nombre total d'adhérents alors que dans la ligne 452, la valeur du nombre d'impayés est bonne. J'ai cherché pendant des heures mais en vain.
Une fois de plus, j'appelle au secours...
Bien à vous tous,
 
Bonjour Constantin,
Sans fichier test, difficile de répondre.
Mais à la lecture du code vous triez sur A1:CT450 et vous utilisez F452 pour le pied de page. est ce normal ?
La colonne F donne bien le nombre d'impayés et non le nombre d'adhérents ?

Sinon fournissez un petit fichier test représentatif.
 
Re,
Pas tout compris. 🙁
En F452 vous avez "=A452" soit "=SOUS.TOTAL(3;F4:F450)" soit le nombre d'adhérent, et non le nombre d'impayés.
Si en F452 vous mettez :
VB:
=NB.SI.ENS(F4:F450;"><";O4:O450;"")
Soit le nombre de ligne dont le prénom est présent mais dont la date de paiement est absente, vous obtenez bien le nombre d'impayés.
Ce qui donne 15 dans votre fichier. ( j'ai vérifiez sur chaque ligne F présent et O vide, la somme donne bien 15 )
Où est ce que je me trompe ?
En appliquant ce filtre j'obtiens en préview une liste de 15 noms :
1771403786218.png
 
Re,
Effectivement, j'aurais du faire du pas à pas.
J'ai l'impression que vous insérer le pied de page avant de faire le filtrage. Et en plus vous etes en calcul manuel.
J'ai contourné le souci d'une autre manière avec :
VB:
Sub IMPAYES()
'
' impayés Macro

    ActiveSheet.Unprotect
    ' Ajout de ces 3 lignes
    ActiveSheet.Range("$A$1:$CT$450").AutoFilter Field:=5, Criteria1:="<>"  ' Filtrage Prénom
    ActiveSheet.Range("$A$1:$CT$450").AutoFilter Field:=15, Criteria1:="="  ' Filtrage impayés
    Calculate                                                               ' Calcul de la feuille
    '
        With ActiveSheet.PageSetup
        .LeftHeader = "&K002060" & "Ass JARDINS FAMILIAUX LAVAL"
        .CenterHeader = "&B&12&KC00000&""Arial""IMPAYES (tous sites confondus)"
...
... suite inchangée
 
Avant de valider la solution, quelques questions d'un débutant...
- J'ai neutralisé les lignes : Ai-je bien fait ?
'ActiveSheet.Range("$A$1:$CT$450").AutoFilter Field:=5, Criteria1:="<>"
'ActiveSheet.Range("$A$1:$CT$450").AutoFilter Field:=15, Criteria1:="="
'ActiveWindow.SmallScroll Down:=-129

D'ailleurs, je ne sais pas ce que la ligne 'ActiveWindow.SmallScroll Down:=-129 signifie. Sans doute une scorie obtenue avec l'enregistreur de macro ?
- Le fait de faire le tri avant de faire la mise en page revêt-il une importance
- Je ne connaissais pas la fonction Calculate. Visiblement, elle accélère le déroulé de la macro ?
En tous cas, tout marche au poil.
Merci et bravo encore

Re,
Pas tout compris. 🙁
En F452 vous avez "=A452" soit "=SOUS.TOTAL(3;F4:F450)" soit le nombre d'adhérent, et non le nombre d'impayés.
Si en F452 vous mettez :
VB:
=NB.SI.ENS(F4:F450;"><";O4:O450;"")
Soit le nombre de ligne dont le prénom est présent mais dont la date de paiement est absente, vous obtenez bien le nombre d'impayés.
Ce qui donne 15 dans votre fichier. ( j'ai vérifiez sur chaque ligne F présent et O vide, la somme donne bien 15 )
Où est ce que je me trompe ?
En appliquant ce filtre j'obtiens en préview une liste de 15 noms :
Regarde la pièce jointe 1227897
C'est bien ça !
 
Avant de valider la solution, quelques questions d'un débutant...
- J'ai neutralisé les lignes : Ai-je bien fait ?
'ActiveSheet.Range("$A$1:$CT$450").AutoFilter Field:=5, Criteria1:="<>"
'ActiveSheet.Range("$A$1:$CT$450").AutoFilter Field:=15, Criteria1:="="
'ActiveWindow.SmallScroll Down:=-129

D'ailleurs, je ne sais pas ce que la ligne 'ActiveWindow.SmallScroll Down:=-129 signifie. Sans doute une scorie obtenue avec l'enregistreur de macro ?
- Le fait de faire le tri avant de faire la mise en page revêt-il une importance
- Je ne connaissais pas la fonction Calculate. Visiblement, elle accélère le déroulé de la macro ?
En tous cas, tout marche au poil.
Merci et bravo encore


C'est bien ça !
 
In fine, voilà la macro... J'ai trouvé pour la ligne en bleu : C'est la paramétrage du du haut de page...
Sub IMPAYES()
'
' impayés Macro
'

'

ActiveSheet.Unprotect
ActiveSheet.Range("$A$1:$CT$450").AutoFilter Field:=5, Criteria1:="<>" ' Filtrage Prénom
ActiveSheet.Range("$A$1:$CT$450").AutoFilter Field:=15, Criteria1:="=" ' Filtrage impayés
ActiveWindow.SmallScroll Down:=-129
ActiveSheet.Rows("2:3").Hidden = False
Calculate
With ActiveSheet.PageSetup
.LeftHeader = "&K002060" & "Ass JARDINS FAMILIAUX LAVAL"
.CenterHeader = "&B&12&KC00000&""Arial""IMPAYES (tous sites confondus)"
.LeftFooter = "&B&K002060" & " Emetteur : Trésorier(e)"
.RightFooter = "&B" & "page &P / &N" & " "
.CenterFooter = "&B&KC00000" & "Nombre impayés :" & Range("F452").Value
.RightHeader = "&B&K002060" & Format(Date, "dddd dd mmmm yyyy") & " "
.TopMargin = Application.InchesToPoints(1) ' Marge haut
.LeftMargin = Application.InchesToPoints(0.3)
.RightMargin = Application.InchesToPoints(0.3)

.Orientation = xlLandscape
.Draft = False
.Zoom = 100
End With

'ActiveSheet.Range("$A$1:$CT$450").AutoFilter Field:=5, Criteria1:="<>"
'ActiveSheet.Range("$A$1:$CT$450").AutoFilter Field:=15, Criteria1:="="


ActiveSheet.PageSetup.PrintArea = "$A$4:$L$451"
ActiveWindow.SelectedSheets.PrintPreview
'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour