Trouver la page dans laquelle se trouve une cellule active et l'imprimer

Bonjour.

Je travaille actuellement dans une feuille qui déjà mise en page pour être prête à l'impression. Cette mise en page est totalement figée.

J'aimerais savoir s'il est possible d'identifier la page (de la mise en page) dans laquelle se trouve la cellule active, et de lancer une impression de cette page uniquement.

J'ai recherché un peu via mon ami google, mais je n'ai pas de piste d'une fonction qui m'aiderait à faire ça.

Merci par avance de votre aide.

Onafe57

Bonjour Onafe57

Votre demande n'est pas vraiment explicite, comme ça à vue de nez

ActiveSheet.PrintOut

A+

Bonjour à tous,

'Numéro de page d'une cellule
Function numPage(Cellule As Range) As Integer
    ' Laurent Longres
    Dim VPC As Integer, HPC As Integer
    Dim VPB As VPageBreak, HPB As HPageBreak
    Dim Ligne As Long, Col As Integer
    With Cellule.Worksheet
        If .PageSetup.Order = xlDownThenOver Then
            HPC = .HPageBreaks.Count + 1
            VPC = 1
        Else
            VPC = .VPageBreaks.Count + 1
            HPC = 1
        End If
        NUMPAGE = 1
        Col = Cellule.Column
        For Each VPB In .VPageBreaks
            If VPB.Location.Column > Col Then Exit For
            NUMPAGE = NUMPAGE + HPC
        Next VPB
        Ligne = Cellule.Row
        For Each HPB In .HPageBreaks
            If HPB.Location.Row > Ligne Then Exit For
            NUMPAGE = NUMPAGE + VPC
        Next HPB
    End With
End Function

eric

Bonsoir eriiic

Rassure moi où pas.... toi tu trouves ça comme ça, tu as compris la demande

A+

J'avoue que j'ai commencé par lui répondre à coté de la plaque.
En relisant j'ai fini par comprendre que page voulait vraiment dire page et non pas feuille
Pour une fois qu'il y en à un qui utilise les bons termes

Bonjour à tous les deux.

Merci @eriiic, je vais tester ça de suite ! :-)

En effet, je parle bien de pages, au sens de la mise en page qui peut être faite sur une feuille Excel. :-)

Cordialement,

Onafe57.

Re-Bonjour.

Je viens de faire un essai dans mon fichier.

J'ai bien intégré la fonction de recherche de la page dans mon fichier.
J'ai juste un souci pour appeler la fonction.

J'ai un message d'erreur qui me dit que la fonction attend un objet. Pourtant, j'appelle ma fonction en écrivant

numPage(Cellule)

"Cellule" étant une variable qui contient l'adresse de la cellule dont je cherche à définir la page où elle se trouve.

Est ce la bonne manière d'appeler la fonction ?

Si non, comment faut il l'appeler ?

Merci par avance. :-)

Onafe57.

Re-Bonjour.

Je cherche en vain depuis ce matin.

Je vous communique ci dessous la manière dont j'appelle la fonction dans ma macro de départ, peut être que je me trompe dans la démarche.

Sub Search_agent()

    With ActiveSheet
        CellSearch = .Range("A1:AG1430").Find(.Range("BN3")).Address    ' Permet de trouver l'adresse d'une cellule qui contient la même valeur que la cellule "BN3" et la stocke dans la variable CellSearch
    End With

    Range(CellSearch).Activate  ' Active la cellule correspondant à l'adresse stockée dans la variable CellSearch

    numPage (CellSearch)    ' Appel de la fonction numPage

End Sub

Sachant que ma macro et la fonction numPage sont tous les deux stockés dans le même module VBA.

L'erreur qui ressort est une "erreur d'exécution 424 : Objet requis".

Merci encore pour votre aide.

Cordialement,

Onafe57.

Re,

N'oublie pas de l'anonymisé, cet utilitaire peut vous aider à les retirer

Je vais essayer de vous faire un extrait de mon fichier de départ qui est assez monstrueux.

Ne garder que la feuille concernée et la macro que je cherche à créer.

Bonsoir,

c'est un range qu'il faut lui passer, enlève le .Address.
Activer la cellule n'est pas nécessaire, et prendre l'habitude de typer toutes ses variables.
Il faut toujours tester si un .Find a trouvé qq chose, sinon -> erreur !!!

Sub Search_agent()
    Dim CellSearch As Range
    With ActiveSheet
        Set CellSearch = .Range("A1:AG1430").Find(.Range("BN3"))    ' Permet de trouver une cellule qui contient la même valeur que la cellule "BN3" et la stocke dans la variable CellSearch
    End With
    If Not CellSearch Is Nothing Then
        numPage (CellSearch)    ' Appel de la fonction numPage
    Else
        ' si non trouvé alors ???
    End If
End Sub

eric

Merci pour cette nouvelle réponse.

Malheureusement, pas de solution.

En retirant le .Address, ma variable ne contient plus un Range, mais la valeur contenue dans la cellule.

Et par la suite, lors de l'appel de la fonction, j'ai toujours une erreur "Objet requis".

Pour simplifier, j'ai suivi le conseil de BrunoM45, je vous transmet un extrait de mon fichier. On retrouve ainsi uniquement la feuille dans laquelle je souhaite faire la recherche, et les deux macros sont dans le Module3 : la fonction numPage et la macro "principale", qui appelle numPage.

Merci encore pour le temps passé à m'aider sur ce sujet.

Cordialement,

Onafe57.

Bonjour Onafe57

eriic et moi sommes vraiment passés à côté comme quoi joindre un fichier permet de trouver

Une fonction s'appelle en renvoyant la valeur du résultat dans une variable, sinon... ça ne sert à rien et ça créé un bug

Sub Search_agent()
  Dim CellSearch As Range, LaPage As Integer

  With ActiveSheet
    ' Trouver une cellule qui contient la même valeur que la cellule "BN3"
    ' et la stocker dans la variable CellSearch
    Set CellSearch = .Range("A1:AG1430").Find(.Range("BN3"))
    If Not CellSearch Is Nothing Then
      LaPage = numPage(CellSearch)     ' Appel de la fonction numPage
      .PrintOut From:=LaPage, To:=LaPage
    Else
      MsgBox "Page non trouvée !?"
    End If
  End With
End Sub

A+

Hé bé oui allons

Bonsoir à tous les deux !

Superbe, ça fonctionne à merveille !

Merci beaucoup pour le temps consacré à ma problématique. :-)

Cordialement,

Onafe57.

Rechercher des sujets similaires à "trouver page laquelle trouve active imprimer"