Problème de sélection

Bonjour,

Je tente de une feuille à imprimer, avec différents blocs en colonne D séparés à chaque fois par un saut de ligne.

Pour préparer mon impression, je souhaite créer un saut de page toutes les 40 lignes, mais que ce saut de page ne coupe pas un bloc.

Pour ce faire, j'ai pensé utilisé le selection.End(xlUp) pour sélectionner, toutes les 40 lignes, l'ensemble des cellules pleines au dessus de ma sélection et passer autant de ligne (avant ensuite de fairemon saut de page toutes les 40 lignes). Cependant, pour une raison que j'ignore, ma sélection ne fonctionne pas: le débogueur m'indique une erreur au niveau ".Cells(j, "D").Select.

Sauriez vous m'aider?

Merci d'avance!

        
Dim DernA, j
    With Sheets("ETIQUETTES COMMANDE")
        DernA = .Range("D65500").End(xlUp).Row
        For j = 40 To DernA Step 40
            If .Cells(j, "D") <> "" Then
               .Cells(j, "D").Select
               Range(selection, selection.End(xlUp)).Select
               selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
            End If
        Next j
    End With

Salut Charlie,

Cells(j, "D")

ne peut pas fonctionner : le deuxième argument doit être un nombre, donc, ici, 4 !


A+

Bonjour! Alors a priori si, cela marche je l'utilise régulièrement, y compris dans une autre macro associée à celle ci, qui tourne correctement.

Pour vérifier, j'ai quand même essayé avec 4 mais ça ne marche pas mieux :/

Effectivement, mea culpa, cela fonctionne : j'ignorais!
Il te reste à nous fournir un morceau de fichier que l'on puisse tester nous-mêmes!


A+

Bonjour,

Ci joint le fichier. Comme il couvre d'autres macros, pour simplifier voilà celles qui sont liées à ce processus:

Dans module 1 uniquement:

- genetiq : la macro centrale qui vient chercher les données que l'on souhaite dans l'onglet "COMMANDES" et les mettre en forme dans l'onglet "ETIQUETTES COMMANDES": c'est ici que le problème se pose, à la fin de la macro uniquement (le reste fonctionne bien)

- InsertEmptyRows: macro qui sert à ajouter des lignes vides à des endroits souhaités

- InsertPageBreaks: macro qui sert à ajouter des sauts de pages à des endroits souhaités

Merci de votre aide, je n'arrive vraiment pas à comprendre :/

Salut Charlie,

quelque chose ainsi ? Ça prend un temps fou : faudra peut-être travailler avec des tableaux...

Sub genetiq()
'
Dim sWk As Worksheet, iRow%, iDiff%, lgNum&
'
Application.ScreenUpdating = False
Set sWk = Worksheets("ETIQUETTES COMMANDE")
'
With sWk
    .Cells.Delete
    .Cells.Font.Size = 12
    .Cells.PageBreak = xlNone
    .Columns(1).Font.Size = 20
    .Columns(1).Font.Bold = True
    .Cells.HorizontalAlignment = xlHAlignLeft
    .Columns(3).HorizontalAlignment = xlHAlignRight
End With
With Worksheets("COMMANDES")
    For x = .[E1].End(xlDown).Row To .Range("H" & Rows.Count).End(xlUp).Row
        If .Range("A" & x).Value <> lgNum Then
            iOK = 1
            iRow = iRow + IIf(iRow > 0 And iRow Mod 40 > 0, 1, 0)
            lgNum = .Range("A" & x).Value
            iDiff = .Columns(1).Find(what:=lgNum, lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlPrevious).Row + 1 - x
            If iDiff > 40 - (iRow Mod 40) Then iRow = iRow + (40 - (iRow Mod 40))
        End If
        iRow = iRow + 1
        If iRow Mod 40 = 1 And iRow > 1 Then sWk.HPageBreaks.Add Before:=sWk.Range("A" & iRow)
        sWk.Range("A" & iRow).Resize(1, 4).Value = Array( _
            IIf(iOK = 1, .Range("A" & x).Value, ""), IIf(iOK = 1, .Range("E" & x).Value, ""), CInt(.Range("I" & x).Value), .Range("H" & x).Value)
        iOK = 0
    Next
End With
sWk.Activate
'
Application.ScreenUpdating = True
'
End Sub
4charlie.zip (603.06 Ko)


A+

Oui c'est parfait merci!

J'aurai bien utilisé les tableaux mais je ne maîtrise pas encore la logique, si tu as des recommandations de cours en ligne je suis très preneur!

Merci beaucoup en tout cas!

Rechercher des sujets similaires à "probleme selection"