Copié tableau sans lignes caché

bonjour,

j'ai ce code sur mon fichier excel:

Sub copie_colle()

Dim DerniereColonne As Integer

DerniereColonne = Range("A1").SpecialCells(xlCellTypeLastCell).Column

Dim DerniereLigne As Integer

DerniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row

DerniereColonne = Range("A1").SpecialCells(xlCellTypeLastCell).Column

DerniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row

Sheets("PLAN FAB").Range(Cells(1, 1), Cells(DerniereLigne, DerniereColonne)).Copy Sheets("Feuil1").Range("A1")

End Sub

Il marche mais il prend les lignes qui sont caché dans mon tableau , comment je peux faire pour prendre seulement les lignes qui ne sont pas caché en sachant que ces lignes caché varie et les lignes non caché varie aussi c'est à dire que certaine ligne caché peuvent devenir non caché ainsi de suite .....

J'ai éssayer de mettre :

Selection.SpecialCells(xlCellTypeVisible).Select

Mais je ne sais pas trop l'insérer

cordialement

Merci

Bonsoir

Essaie ceci :

Sub copie_colle()
Dim DerniereLigne As Integer
With Sheets("PLAN FAB")
DerniereColonne = .Range("A1").SpecialCells(xlCellTypeLastCell).Column
DerniereLigne = .Range("A1").SpecialCells(xlCellTypeLastCell).Row
.Range(Cells(1, 1), Cells(DerniereLigne, DerniereColonne)).SpecialCells(xlCellTypeVisible).Copy Sheets("Feuil1").Range("A1")
End With
End Sub

Si ok, clique sur le V vert à coté du bouton EDITER pour cloturer le fil lors de ta réponse

Amicalement

bonjour,

le code est bon , merci ,mais est t'il possible de l'avoir en automatique c'est à dire des que je vais sur la feuille le copier coller se fait automatiquement ?

cordialement

Re

Tu avais cloturé le fil et ce n'est que par hasard que je reviens voir... Lorsque tu veux décloturer, clique sur le V rouge à coté du bouton EDITER.

est t'il possible de l'avoir en automatique c'est à dire des que je vais sur la feuille le copier coller se fait automatiquement

Fais ceci :

  • clique droite sur l'onglet concerné par la macro
  • choisis l'option "visualiser le code"
  • colle le code ci-dessous
Private Sub Worksheet_Activate()
Call copie_colle
End Sub

Amicalement

Bonjour,

Désolé je ne savais pas ,

J'ai essayé le deuxième code mais un problème est survenu:(l'autre marche par contre je ne sais pas si cela joue mais j'ai déja dans l'onglet ou j'ai mis le premièr code un PRIVATE sub worsheet_activate ()

voir imprime écran pièce jointe

merci encore de ta réponse .

imprimmeecran

Re,

par contre je ne sais pas si cela joue mais j'ai déja dans l'onglet ou j'ai mis le premièr code un PRIVATE sub worsheet_activate ()

Ah ben oui, ton premier code interfère avec le second. Il faut donc combiner les deux.

Donne moi le premier code en question

A te relire

re,

J'ai mis ce code et sa a l'air de fonctionner si j'intègre mon code à l'intérieur :

Private Sub worksheet_Activate()

 Dim Plage As Range, C As Range
    Set Plage = ([B1:B30])
    For Each C In Plage
        If C.Value = "" Then
            C.EntireRow.Hidden = True
        Else
            C.EntireRow.Hidden = False
        End If
    Next C

    DerniereColonne = Range("A1").SpecialCells(xlCellTypeLastCell).Column
DerniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row
Range(Cells(1, 1), Cells(DerniereLigne, DerniereColonne)).SpecialCells(xlCellTypeVisible).Copy Sheets("feuil1").Range("A1")

    End Sub

Le seul problème maintenant est que à chaque fois que le copié coller se fait et bien le nouveau tableau va venir sur le précedent et si celui si est plus petit on verra une partie du tableau d'avant , il faudrait que je trouve un code qui me permette de supprimer puis de coller , et sa toujours automatiquement . mais je en sais pas comment y arriver

merci

re,

Non ce n'est pas bon. Il faut laisser le code Copie_colle dans le module et y faire appel comme je t'ai expliqué

Peux-tu me donner ton fichier que je regarde

Amicalement

Edit Dan :

Fais un essai comme ceci :

Private Sub worksheet_Activate()
  Dim Plage As Range, C As Range
    Set Plage = Range("B1:B30")
    Plage.EntireRow.Hidden = False
    Call copie_colle
    For Each C In Plage
        If C.Value = "" Then
            C.EntireRow.Hidden = True
        Else
            C.EntireRow.Hidden = False
        End If
    Next C
End Sub

re,

sa ne marche pas il me met la même erreur que sur l'imprime écran avec le nouveau code

s'est encore moi j'ai fais ce code et il marche nikel pour l'instant :

Private Sub worksheet_Activate()
  Dim Plage As Range, C As Range
    Set Plage = Range("B1:B30")
    Plage.EntireRow.Hidden = False
    For Each C In Plage
        If C.Value = "" Then
            C.EntireRow.Hidden = True
        Else
            C.EntireRow.Hidden = False
        End If
    Next C

supp_onglet_data ("Feuil1")

 DerniereColonne = Range("A1").SpecialCells(xlCellTypeLastCell).Column
DerniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row
Range(Cells(1, 1), Cells(DerniereLigne, DerniereColonne)).SpecialCells(xlCellTypeVisible).Copy Sheets("feuil1").Range("A1")

End Sub

Function supp_onglet_data(Feuil1 As String)
Dim source As Worksheet
Set source = ActiveWorkbook.Worksheets(Feuil1)
source.Range("A1", "Z65535").Delete  'On supprime la plage A1->Z65535
End Function

Peut être y a y'il des améliorations ou plus simple je ne sais pas mais pour l'instant il me vas très bien.

Merci pour tes réponses

Re

Impossible j'ai testé le code sur un fichier

Où as-tu placé le code SUB copie_colle ???

Rechercher des sujets similaires à "copie tableau lignes cache"