Problème de condition dans une macro

Résolu
Bonjour,

J’ai commencé ma macro, l’impression se fait correctement, mais je bloque sur un problème : je voudrai pouvoir introduire une condition supplémentaire et je ne sais pas comment faire. Pour expliquer, je prends les valeurs dans B5 et C5 de la feuille « affectation » que je mets respectivement dans les cellules B7 et D9 de la feuille « Carte », je voudrai que si dans la cellule E5 de la feuille « affectation », il y a « O » on ne fasse rien et on passe à la ligne suivante.
Si quelqu’un a une idée voire une solution, je serai preneur.
Cordialement

Private Sub Impression_carburant_Click()
Application.ScreenUpdating = False
Set fa = Sheets("Affectation")
Set fc = Sheets("Carte")

'Impression des feuilles
Dim c1 As Range, c2 As Range, i&

With fc
Set c1 = .[B7] 'cellule B5 " affectation "
Set c2 = .[D9] 'cellule C5 " affectation "
.PageSetup.PrintArea = "A1:K22"
.PageSetup.Zoom = False
.PageSetup.FitToPagesWide = 1
End With

With fa.[C5].CurrentRegion
For i = 2 To .Rows.Count
'impression feuilles
c1 = .Cells(i, 1)
c2 = .Cells(i, 2): c2.Parent.PrintPreview
Next
End With

Application.ScreenUpdating = True
End Sub


Configuration: Windows / Firefox 72.0

4 réponses

  1. Bonsoir,

    Essaie d'ajouter cette condition avant le code que tu ne souhaites pas exécuter si E5 = 0 :
    If (fa.Range("E5").Value <> 0) Then

    et mettre
    End If
    après la denière ligne de code à ne pas exécuter si E5 = 0
    1. Bonjour NeoGo,
      Le problème est d'incrémenté la cellule, en fait je commence par tester la ligne 5 si dans la colonne E il y a O, je n'imprime pas et passe à la ligne suivante. Si dans la ligne suivante il n'y a rien dans la colonne E, j'imprime et ainsi de suite.
      Bonne fin de journée.
      1. Bonjour a tous et toutes,

        avec ce que j'ai compris, a tester:

        Private Sub Impression_carburant_Click()
            'Impression des feuilles
            Dim c1 As Range, c2 As Range, i&
        
            'Application.ScreenUpdating = False
            Set fa = Sheets("Affectation")
            Set fc = Sheets("Carte")
        
            With fc
                Set c1 = .[B7] 'cellule B5 " affectation "
                Set c2 = .[D9] 'cellule C5 " affectation "
                .PageSetup.PrintArea = "A1:K22"
                .PageSetup.Zoom = False
                .PageSetup.FitToPagesWide = 1
            End With
        
            With fa.[C5].CurrentRegion
                For i = 1To .Rows.Count
                    'impression feuilles
                    If .Cells(i, 5) = "" Then
                        c1 = .Cells(i, 1)
                        c2 = .Cells(i, 2)
                        c2.Parent.PrintPreview
                    End If
                Next
            End With
            Application.ScreenUpdating = True
        End Sub
        
        1. Bonjour et merci "f894009",
          J'ai testé la solution est c'est exactement ce que je voulais.
          Bonne journée