Sauter une ligne et reprendre le code VBA

Bonjour, je veins vers vous car j'ai un souci de code VBA

Dans mon document il y a des lignes vides et lorsque que la boucle tombe sur sur une ligne elle se termine...

Sauf que le groupe de lignes concernées n'est pas complet.

Est ce qu'il faut mettre dans mon code de la ligne n° X à la ligne n°Y ou est ce que l'on peut reprendre une boucle après une ligne vide?

Sub Printbeau()

' Printbeau Macro
'Dim Ligne As Long
Dim F1 As Worksheet

  Set F1 = Sheets("DONNEES variables")
  Ligne = 8
  With Sheets("Feuille mensuelle")
    While F1.Cells(Ligne, "A") <> ""
      .Range("Q3") = F1.Cells(Ligne, "A")
      .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
      '.PrintPreview   ' Pour les tests
     Ligne = Ligne + 1
    Wend
    End With

End Sub

et moi j'ai essayé ce qui suit...

Sub Printbeau()

' Printbeau Macro
'Dim Ligne As Long
Dim F1 As Worksheet

  Set F1 = Sheets("DONNEES variables")
  Ligne = 8
  With Sheets("Feuille mensuelle")
    While F1.Cells(Ligne, "A") <> ""
      .Range("Q3") = F1.Cells(Ligne, "A")
      .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
      '.PrintPreview   ' Pour les tests
     Ligne = Ligne + 1
    Wend
    End With
    Set F1 = Sheets("DONNEES variables")
  Ligne = 17
  With Sheets("Feuille mensuelle")
    While F1.Cells(Ligne, "A") <> ""
      .Range("Q3") = F1.Cells(Ligne, "A")
      .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
      '.PrintPreview   ' Pour les tests
     Ligne = Ligne + 1
    Wend
    End With
    Set F1 = Sheets("DONNEES variables")
  Ligne = 24
  With Sheets("Feuille mensuelle")
    While F1.Cells(Ligne, "A") <> ""
      .Range("Q3") = F1.Cells(Ligne, "A")
      .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
      '.PrintPreview   ' Pour les tests
     Ligne = Ligne + 1
    Wend
  End With
End Sub

Sans grand résultat...

Merci

Leakim

Salut,

n'ayant ni ton fichier ni d'imprimante, je ne peux tester mais essaye ce code, à tout hasard...

Sub Printbeau()

Dim F1 As Worksheet, derLig As Long

derLig = Range("Q" & Rows.Count).End(xlUp).Row

Range("A8").Select

On Error Resume Next

For a = 8 To derLig
    If Not IsEmpty(ActiveCell) Then
        Sheets("Feuille mensuelle").PrintOut Copies:=1, Collate:=True
        ActiveCell.Offset(1, 0).Select
    Else
        ActiveCell.Offset(1, 0).Select
    End If
Next a

End Sub

Merci pour cet essai. Il fonctionne le nombre de ligne est le bon, mais il ce code ne change pas la valeur de la cellule qui génère le changement de nom pour chaque document.

Je me demandai si avec une condition: si le numéro de ligne égale 24 alors fin...

A traduire en code VBA comme si dessous ???

Sub Printbeau()

' Printbeau Macro
'Dim Ligne As Long
Dim F1 As Worksheet

  Set F1 = Sheets("DONNEES variables")
  Ligne = 8
  With Sheets("Feuille mensuelle")
    While F1.Cells(Ligne, "A") <> ""
      .Range("Q3") = F1.Cells(Ligne, "A")
      .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
      '.PrintPreview   ' Pour les tests
    Ligne = Ligne + 1
IF Ligne = 24 then end
    Wend
    End With

End Sub

donc si j'ai bien compris, dans ta cellule Q3, tu inscris le No de la dernière ligne, c'est ça ?

Il suffit de changer le code comme suit :

Sub Printbeau()

Dim F1 As Worksheet, derLig As Long

derLig = Range("Q3") 'changement

Range("A8").Select

On Error Resume Next

For a = 8 To derLig
    If Not IsEmpty(ActiveCell) Then
        Sheets("Feuille mensuelle").PrintOut Copies:=1, Collate:=True
        ActiveCell.Offset(1, 0).Select
    Else
        ActiveCell.Offset(1, 0).Select
    End If
Next a

End Sub

Et bien non en fait en Q3 c'est une référence de fonction recherche.

C'est Banzai64 qui m'a fait çà au petit oignon...

While F1.Cells(Ligne, "A") <> ""
      .Range("Q3") = F1.Cells(Ligne, "A")

La valeur de A dans la ligne de ma base de donnée est reporté dans la cellule Q3.

et c'est dans ma base de données que j'ai des lignes vides.

Donc il faudrait que que dans le code cette action de incrémentation de la cellule Q3 reste et que lors d'une ligne vide le code continu...

Je ne sais si je suis clair.

Merci de ta sollicitude en tout les cas.

Pour répondre à ta question

Game Over a écrit :

donc si j'ai bien compris, dans ta cellule Q3, tu inscris le No de la dernière ligne, c'est ça ?

Non ,dans la cellule Q3 c'est la référence de la base de données.

Leakim

Si tu peux joindre un fichier, ce sera plus concrêt et ça ne devrait pas etre trop difficile à résoudre.

Insomnie quand tu nous tiens !!!

Il faut que je bosse sur le doc pour l'anonymer ...

Je pense que pour l'instant je vais mettre une valeur dans la cellule A dans des lignes vides, ce qui me générera une impression.

Même si la rechercheV est fausse au moins je n'aurai plus de rupture dans mon code.

Je pense aussi que c'est une bricole ... Cela en dit long de mon autonomie en code VBA

Bref, merci je vais clôturer ce post pour en reformuler un avec un fichier.

Merci, Leakim

Rechercher des sujets similaires à "sauter ligne reprendre code vba"