Problème MFC une ligne sur deux

  • Initiateur de la discussion Initiateur de la discussion fenec
  • Date de début Date de début

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 !

Re : Problème MFC une ligne sur deux

Re 🙂,
Oui, en réalité le test est mal fait 🙄...
Code:
    For I = 34 To 21 Step -1
        If Range("C" & I) = "" And I > 24 Then
            Rows(I).Hidden = True
        Else
            Range("C" & I & ":I" & I).Interior.ColorIndex = IIf(Flag, 15, 19)
            Flag = Not Flag
        End If
    Next I
sera mieux 😛
Bonne soirée 😎
 
Dernière édition:
Re : Problème MFC une ligne sur deux

Re,
Dans ton test tu remplaces ce que j’avais essayé,

Code:
If Range("C24") > 0 Then
         Exit For
            End If


ce qui me supprime une ligne en fin de plage et donc deux couleurs qui se suivent mais qui m’imprime tout

Par :

Code:
And I > 24 Then

Et ensuite tu masques toujours les lignes

Code:
Rows(I).Hidden = True


Alors que je ne veux plus les masquer si "C24" non vide

Je continue donc a me gratter la tête

Cordialement

Fenec
 
Re : Problème MFC une ligne sur deux

Re 🙂,
J'avais mal compris, pour moi la logique était :
Au delà de 24, je masque si vide, avant 24, je masque pas 🙄...
Si donc c'est le contraire
Code:
    If Range("C24") = "" Then
        For I = 34 To 21 Step -1
            If Range("C" & I) = "" Then
                Rows(I).Hidden = True
            Else
                Range("C" & I & ":I" & I).Interior.ColorIndex = IIf(Flag, 15, 19)
                Flag = Not Flag
            End If
        Next I
    End If
De toute façon, les couleurs sont rétablies après le preview, donc en ne masquant rien, elle doivent être bonnes 😛
Bonne suite 😎
 
Re : Problème MFC une ligne sur deux

Bonjour le fil, salut JNP 😉

Un peu d'aide, en modifiant le code ainsi, je n'ai pas de problème 😉
VB:
Private Sub CommandButton1_Click()  Dim Rep%
  Dim nbrCopie As Integer
  
  Application.ScreenUpdating = False
  'Sheets("Feuil1").Unprotect Password:="1012" 'ote la protection de la feuille


  With ActiveSheet
    With .PageSetup
      .PrintTitleRows = "$2:$20"              ' Lignes titre


      .PrintArea = " B3:J57"                  ' Zone d'impression (à régler)
    End With


    Dim Flag As Boolean, I As Integer


    For I = 34 To 21 Step -1
      If Range("C" & I) = "" Then
        Rows(I).Hidden = True
      Else
        Range("C" & I & ":I" & I).Interior.ColorIndex = IIf(Flag, 15, 19)
        Flag = Not Flag
      End If
    Next I


    .PrintPreview      'Aperçu avant impression


    For I = 34 To 21 Step -1
      Rows(I).Hidden = False
      Range("C" & I & ":I" & I).Interior.ColorIndex = IIf(Flag, 15, 19)
      Flag = Not Flag
    Next I




    ' nbrCopie = InputBox("Combien de copie voulez-vous faire ?", Title:="Copies")
    '  If nbrCopie = 0 Then


    '     Exit Sub
    '  Else
    '      ActiveWindow.SelectedSheets.PrintOut Copies:=nbrCopie, Collate:=True
    ' End If
  End With


  On Error Resume Next
  'ActiveSheet.ShowAllData
  Application.Goto Range("A1"), Scroll:=True
  ' Sheets("Feuil1").Protect Password:="1012" 'remet la protection de la feuille
  Application.ScreenUpdating = True


End Sub

A+
 
Re : Problème MFC une ligne sur deux

re,et bonjour BrunoM45

Ta logique est bonne :
Au delà de 23, je masque si vide, avant 24, je ne masque pas

Donc en remplaçant :

Code:
For I = 34 To 21 Step -1

Par :

Code:
For I = 34 To 24 Step -1


C’est ok pour la mise en page que je désire, mais le coloriage ne fonctionne plus

Merci pour le temps que tu m’accordes
 
Re : Problème MFC une ligne sur deux

Re,

Juste une petite question comme ça ... on peut savoir pourquoi tu ne masque pas avant !?

Sinon le code 😉
VB:
Private Sub CommandButton1_Click()
  Dim Flag As Boolean, I As Integer
  Dim Rep%
  Dim nbrCopie As Integer
  
  Application.ScreenUpdating = False
  'Sheets("Feuil1").Unprotect Password:="1012" 'ote la protection de la feuille
  With ActiveSheet
    With .PageSetup
      .PrintTitleRows = "$2:$20"              ' Lignes titre
      .PrintArea = " B3:J57"                  ' Zone d'impression (à régler)
    End With
    
    For I = 34 To 21 Step -1
      If Range("C" & I) = "" And I >= 24 Then
        ' Masquer les lignes vides au dessus de la n° 23
        Rows(I).Hidden = True
      Else
        Range("C" & I & ":I" & I).Interior.ColorIndex = IIf(Flag, 15, 19)
        Flag = Not Flag
      End If
    Next I


    .PrintPreview      'Aperçu avant impression
    For I = 34 To 21 Step -1
      Rows(I).Hidden = False
      Range("C" & I & ":I" & I).Interior.ColorIndex = IIf(Flag, 15, 19)
      Flag = Not Flag
    Next
    ' nbrCopie = InputBox("Combien de copie voulez-vous faire ?", Title:="Copies")
    '  If nbrCopie = 0 Then


    '     Exit Sub
    '  Else
    '      ActiveWindow.SelectedSheets.PrintOut Copies:=nbrCopie, Collate:=True
    ' End If
  End With


  On Error Resume Next
  'ActiveSheet.ShowAllData
  Application.Goto Range("A1"), Scroll:=True
  ' Sheets("Feuil1").Protect Password:="1012" 'remet la protection de la feuille
  Application.ScreenUpdating = True


End Sub

A+
 
Dernière modification par un modérateur:
Re : Problème MFC une ligne sur deux

[SUB][/SUB]re,
je ne veux tout simplement pas masquer les lignes 21-22-23 pour une histoire de rendu à l'impression
si elles sont visibles mon devis tient sur une feuille, si tu rajoutes 24-25 etc... tout se décale sur deux pages et a l'impression pas cool
je pensais que vous aviez vu ce détail

je teste ta solution et vous tiens au courant
 
Re : Problème MFC une ligne sur deux

Re,
Je l'avais bien vu, c'est pour cela que je masquais toutes les lignes vides
c'est pour cela que je veux que les lignes 21-22-23 restent visibibles et que si 24 non vide ne plus rien masquer

avec ton dernier code en modifiant 21 par 24 j'obtiens la solution ne reste que la coloration

Code:
If Range("C24") = "" Then
         For I = 34 To 24 Step -1
             If Range("C" & I) = "" Then
                 Rows(I).Hidden = True
             Else
                 Range("C" & I & ":I" & I).Interior.ColorIndex = IIf(Flag, 15, 19)
                 Flag = Not Flag
             End If
         Next I
     End If
 
Dernière édition:
Re : Problème MFC une ligne sur deux

Re 🙂,
Donc finalement, si je comprends bien, c'est soit ça tient sur 1 page, soit sur 2 🙄...
Vu que les marges de nos imprimantes sont certainement différente, moi, je pourrais faire tenir une ligne de plus, mais bon à tester
Code:
If Range("C24") = "" Then
    Range("A25:A34").EntireRow.Hidden = True
    For I = 24 To 21 Step -1
        Range("C" & I & ":I" & I).Interior.ColorIndex = IIf(Flag, 15, 19)
        Flag = Not Flag
    Next I
Else
    For I = 34 To 21 Step -1
        Range("C" & I & ":I" & I).Interior.ColorIndex = IIf(Flag, 15, 19)
        Flag = Not Flag
    Next I
End If
Bonne suite 😎
 
Re : Problème MFC une ligne sur deux

Re,

Mon cher JNP si tu as pigé, tant mieux ... moi que dalle
Une copie d'écran avec le problème aurait été la bien venue 🙄

Bref je ne faisais que passer 😉
 
Re : Problème MFC une ligne sur deux

Re,
Viens de tester c'est nickel JNP

Pourquoi dis tu cela?
Pas très logique, mais bon...

Il me semble pourtant logique de masquer ce qui ne sert à rien ...non!?

Une petite question si tu permets

Pourquoi dans ton code tu utilises "A" et non "C" ?:

Code:
Range("A25:A34").EntireRow.Hidden = True

Cela est -il important ou puis-je utiliser "C"?
 
- 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
7
Affichages
299
Réponses
33
Affichages
2 K
  • Question Question
Microsoft 365 problème d'index
Réponses
19
Affichages
497
Retour