Reference plage contenant cellules fusionnees

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 !

cathodique

XLDnaute Barbatruc
Bonjour,

Je voudrai ajuster une zone d'impression (plage) pour 3 feuilles. le nombre de lignes et de colonnes est variable pour les 3 feuilles. j'ai fait quelques essais mais avec mon code les références des plages sont erronées (sauf pour la dernière feuille). Mes connaissances du vba sont basiques, je ne parviens pas à trouver mes erreurs. Pour cela je sollicite votre aide, merci beaucoup.
Code:
Sub Ajuste_zone_impression()
Dim Tp
Dim Ind As Byte
Dim Plage, DernièreLigne, DernièreColonne

Application.ScreenUpdating = False
 
Tp = Array("A", "B", "C")
 
For Ind = 0 To 2
    With Worksheets(Tp(Ind))
        
    DernièreLigne = .Range("A1").SpecialCells(xlCellTypeLastCell).Row
    MsgBox "la dernière ligne de la feuille " & Tp(Ind) & " est : " & DernièreLigne
    
    DernièreColonne = .Cells(1, 1).SpecialCells(xlCellTypeLastCell).Column
    MsgBox "la dernière colonne de la feuille " & Tp(Ind) & " est : " & DernièreColonne
    
    Plage = .Range(.Cells(1, 1), .Cells(DernièreLigne, DernièreColonne)).Address
        MsgBox "la plage à imprimer de la feuille " & Tp(Ind) & " est : " & Plage
    
    'ajustement zone impression
    'With ActiveSheet.PageSetup
     '   .PrintArea = Plage
      '  .Zoom = False
       ' .FitToPagesWide = 1
        '.FitToPagesTall = False '1
    'End With
End With
Next Ind

End Sub
ci-joint le fichier, je vous remercie par avance.

Cordialement,
 

Pièces jointes

Re : Reference plage contenant cellules fusionnees

Bonjour cathodique

ce code donne les dernières lignes et dernières colonnes pour chaque feuille
Code:
Sub Ajuste_zone_impression()
Application.ScreenUpdating = False
For i = 1 To 3
Sheets(i).Select
    Range("A4").Select
    Selection.CurrentRegion.Select
    MsgBox "la dernière ligne de la feuille " & i & " est : " & 3 + Selection.Rows.Count
    MsgBox "la dernière colonne de la feuille " & i & " est : " & Selection.Columns.Count
Next i
Sheets(4).Select
Application.ScreenUpdating = True
End Sub
à+
Philippe
 
Re : Reference plage contenant cellules fusionnees

Bonjour phlaurent55,

Je te remercie beaucoup, ton code fonctionne bien. Je vais essayer de l'adapter à mon fichier original qui contient une trentaine de feuilles. En fait, sur fichier joint je n'ai repris que les 3 feuilles qui m’intéresse. le code doit donc s'exécuter pour les feuilles nommées "A", "B" et "C". C'est pour récupérer la plage allant de A1 à dernièreLigne,dernièreColonne et faire l'ajustement de la plage à imprimer avec ce bout de code:
Code:
'ajustement zone impression
    With ActiveSheet.PageSetup
        .PrintArea = Plage
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = False '1
    End With
Ces 3 feuilles sont obtenues par macros, leurs nombres de lignes et de colonnes sont variables. Je voudrai un code pour désigner cette plage (de cells(1,1) à cells(dernièreLigne, dernièreColonne).

Merci.

Cordialement,
 
Re : Reference plage contenant cellules fusionnees

Bonjour,

Hello Philippe😉

@cathodique, une autre solution possible:
Code:
Sub Ajuste_zone_impression()
Dim wsh As Worksheet
Dim Plage, DernièreLigne, DernièreColonne
    Application.ScreenUpdating = False
    For Each wsh In Worksheets(Array("A", "B", "C"))
        With wsh
            DernièreLigne = .Cells.Find(What:="*", _
                                        After:=.Range("A1"), _
                                        Lookat:=xlPart, _
                                        LookIn:=xlFormulas, _
                                        SearchOrder:=xlByRows, _
                                        SearchDirection:=xlPrevious, _
                                        MatchCase:=False).Row

            DernièreColonne = .Cells.Find(What:="*", _
                                          After:=.Range("A1"), _
                                          Lookat:=xlPart, _
                                          LookIn:=xlFormulas, _
                                          SearchOrder:=xlByColumns, _
                                          SearchDirection:=xlPrevious, _
                                          MatchCase:=False).Column

            Plage = .Range(.Cells(1, 1), .Cells(DernièreLigne, DernièreColonne)).Address
            MsgBox "la plage à imprimer de la feuille " & .Name & " est : " & Plage
            'ajustement zone impression
            With .PageSetup
                .PrintArea = Plage
                .Zoom = False
                .FitToPagesWide = 1
                .FitToPagesTall = False    '1
            End With
        End With
    Next wsh
End Sub

A+
 
[RESOLU] : Reference plage contenant cellules fusionnees

Bonjour Hasco,

je te remercie beaucoup pour ton aide . Je te dis BRAVO, c'est exactement ce que je cherchais. Toute ma reconnaissance.

je t'avoue que je n'ai pas compris tes 2 lignes de code pour DernièreLigne et DernièreColonne
Code:
DernièreLigne = .Cells.Find(What:="*", _
                                        After:=.Range("A1"), _
                                        Lookat:=xlPart, _
                                        LookIn:=xlFormulas, _
                                        SearchOrder:=xlByRows, _
                                        SearchDirection:=xlPrevious, _
                                        MatchCase:=False).Row

 DernièreColonne = .Cells.Find(What:="*", _
                                          After:=.Range("A1"), _
                                          Lookat:=xlPart, _
                                          LookIn:=xlFormulas, _
                                          SearchOrder:=xlByColumns, _
                                          SearchDirection:=xlPrevious, _
                                          MatchCase:=False).Column
Sans vouloir abuser. Pourrai-tu me les expliquées? Merci beaucoup.
Je peux dire que mon problème est résolu.

Cordialement
 
Re : Reference plage contenant cellules fusionnees

Re,


Code:
 DernièreLigne = .Cells.Find(What:="*", _
                                         After:=.Range("A1"), _
                                         Lookat:=xlPart, _
                                         LookIn:=xlFormulas, _
                                         SearchOrder:=xlByRows, _
                                         SearchDirection:=xlPrevious, _
                                         MatchCase:=False).Row

Veut dire: cherche n'importe quoi (*) à partir de A1,en procédant par ligne (SearchOrder....) en cherchant la précédente occurence(xlPrevious) et c'est là le truc: comme excel cherche les données en bouclant sur les plages, il cherchera à partir de la fin en remontant)

A+
 
Re : Reference plage contenant cellules fusionnees

Re,

Merci beaucoup pour tes explications et surtout pour ton code. C'est vraiment le top, je l'ai intégré à mes procédures et ça fonctionne parfaitement bien.

Merci encore à vous deux.

Cordialement,
 
- 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

Discussions similaires

Réponses
5
Affichages
780
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
7
Affichages
309
Réponses
15
Affichages
470
Réponses
4
Affichages
646
Réponses
9
Affichages
785
Réponses
10
Affichages
581
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
408
Retour