Microsoft 365 suppression de colonne spécifique

jui42

XLDnaute Junior
Bonjour à tous et à toutes,
J'ai un fichier comprenant plusieurs mesures (critères de performances).
J'aimerais, pouvoir, lors d'une impression ne conserver uniquement la première et la dernière mesure.
Je pense que cela se résout facilement avec l'association des fonction "INDEX" et "EQUIV" qui vont chercher le "mesure 1" et mesure n" mais je bloque car le nombre de mesures est variables.

--> Mesure n sera toujours au même endroit tandis que mesure 1 va s'éloigner de manière proportionnelle au nombre de mesures.
Je joint un fichier, je suis ouvert à toutes propositions.
Merci pour votre temps ,

Cordialement
 

Pièces jointes

  • 6.B44.xlsm
    21.5 KB · Affichages: 8

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Comme il n'y a pas de données, même fictives dans le fichier et qu'on ne sait ni quoi ni qu'est-ce, deux propositions :

Equiv :
=EQUIV("Mesures 1";$1:$1;0)
Chercher l'expression "Mesures 1" dans la ligne $1:$1 (J'aime pas référencer des lignes entières) et en retourner la position
Toujours Equiv :
=EQUIV(9^9;J2:XFD2;1)
Cherchera la valeur improbable 9^9 ou la valeur immédiatement inférieure dans la plage j2:xfd2
(donnera #NA! puisqu'il n'y a pas de données)

Si ce sont des valeurs textuelles, remplace 9^9 par une valeur texte improbable ("ZZZZzzz")
=Index(A2:XFD2; EQUIV("Mesures 1";$1:$1;0))
donnera la valeur de la cellule de la colonne "Mesures 1" pour la ligne 2

Avec office 365 vous avez également RECHERCHEX

Cordialement
 

job75

XLDnaute Barbatruc
Bonjour jui42, Hasco,

Pour imprimer vous voulez masquer les colonnes entre "Mesures 29" et "Mesures 1", donc utilisez :
VB:
Sub Imprimer()
Dim dc As Integer
With ActiveSheet
    dc = .Cells(1, .Columns.Count).End(xlToLeft).Column
    If dc > 11 Then .Columns(11).Resize(, dc - 11).Hidden = True 'masque
    .PageSetup.PrintArea = .Columns(1).Resize(, dc).Address
    .PageSetup.Zoom = False
    .PageSetup.FitToPagesWide = 1
    .PrintPreview 'pour tester
    '.PrintOut 'pour imprimer
    .Columns.Hidden = False 'affiche tout
End With
End Sub
A+
 

jui42

XLDnaute Junior
Super, j'ai trouvé via l'enregistreur de macro un code permettant d'ajouter automatiquement un en-tête à chaque impression.
VB:
            Dim dc  As Integer
           
            With ActiveSheet
               
                Application.PrintCommunication = False
                dc = .Cells(1, .Columns.Count).End(xlToLeft).Column
                If dc > 11 Then .Columns(11).Resize(, dc - 11).Hidden = True        'masque
               
                .PageSetup.PrintArea = .Columns(1).Resize(, dc).Address
               
                .PageSetup.Zoom = False
                '.PageSetup.Orientation = xlLandscape
               
                .PageSetup.FitToPagesWide = 1
               
                ActiveWindow.View = xlPageLayoutView
                ActiveSheet.PageSetup.CenterHeaderPicture.Filename = _
                                                                     "C:\chemin a mettre \ENTETE.png"
                Application.PrintCommunication = False
                With ActiveSheet.PageSetup
                    .LeftHeader = ""
                    .CenterHeader = "&G"
                    .RightHeader = ""
                    .LeftFooter = ""
                    .CenterFooter = ""
                    .RightFooter = ""

                End With
                Application.PrintCommunication = True
               
                .PrintPreview        'pour tester
                '.PrintOut 'pour imprimer
               
               
                .Columns.Hidden = False        'affiche tout
            End With
            ActiveWindow.View = xlNormalView

Merci, et bonne journée :)
 

Discussions similaires

Réponses
5
Affichages
351
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 215
Messages
2 086 332
Membres
103 188
dernier inscrit
evebar