Ajustement copier coller

bonjour,

je souhaite demander votre aide,

j'ai crée une macro qui fais que lorsque on clique sur le bouton, elle importe des lignes d'un autre fichier, puis elle vient les coller dans mon fichier.

sauf que la taille de la table du fichier d'ou j'importe ces ligne change,

il peut contenir 900 lignes, 920, 950 ...........

comment ajuster ma macro svp.

je vous laisse regarder mon code.

merci a tous!!

''''''''''''''''''MACRO QUI IMPORTE LES PREVENTIFS DU MOIS EN COURS DU FICHIER MAINTENANCE PREVENTIVE PROGRAMMEE'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub préventifs_des_mois_en_cours()   ''''''' ATTENTION: A EXECUTER UNE FOIS'''''''

Dim WB_D As Workbook

Dim REP()
Dim A%
REP = Array("T")   ' declaration des noms du disque
For A = 0 To UBound(REP)
Set WB_D = Workbooks.Open(REP(A) & ":\Travaux\SUIVI\PREVENTIF\MAINTENANCE PREVENTIVE PROGRAMMEE.xlsm")

With Sheets("programme global") '.........agit sur la feuille "
'filtrer sur mois en cours
Worksheets("programme global").Range("H4").AutoFilter _
 Field:=7, _
 Criteria1:=xlFilterThisMonth, Operator:=xlFilterDynamic
    On Error Resume Next '............................en cas d'erreur (pas de données à filtrer),on poursuit la procédure

'....copie les données visible ..........................................
Sheets("programme global").Select
Sheets("programme global").Range("b4:L988").SpecialCells(xlCellTypeVisible).Select     ' comment ajuster ici, la talle de ma table augment 988...1000
Selection.Copy

' coller dans trvx en cours
Windows("TRAVAUX.xlsm").Activate
Sheets("trvx en cours").Select
Dim Ligne As Long
Ligne = Sheets("trvx en cours").Cells(Rows.Count, 1).End(xlUp).Row + 1
Range("F" & Rows.Count).End(xlUp).Offset(1).Select
ActiveSheet.Paste

End With

'Application.DisplayAlerts = True '.....................réactive le message d'alerte
'Application.CutCopyMode = False '......................désactive la copie
Next A
End Sub

Bonjour

A essayer

Sub préventifs_des_mois_en_cours()
Dim WB_D As Workbook
Dim REP()
Dim A%

REP = Array("T")   ' declaration des noms du disque
For A = 0 To UBound(REP)
    Set WB_D = Workbooks.Open(REP(A) & ":\Travaux\SUIVI\PREVENTIF\MAINTENANCE PREVENTIVE PROGRAMMEE.xlsm")

    With Sheets("programme global") 'agit sur la feuille "
        'filtrer sur mois en cours
        .Range("H4").AutoFilter Field:=7, Criteria1:=xlFilterThisMonth, Operator:=xlFilterDynamic

        On Error Resume Next 'en cas d'erreur (pas de données à filtrer),on poursuit la procédure
        'copie les données visible
        Dim ligne As Long
        ligne = Workbooks("Travaux.xlsm").Sheets("trvx en cours").Cells(Rows.Count, 1).End(xlUp).Row + 1

        'coller dans trvx en cours
        .Range("b4:L" & .Range("B" & .Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy _
            Workbooks("Travaux.xlsm").Sheets("trvx en cours").Range("F" & Workbooks("Travaux.xlsm").Sheets("trvx en cours").Range("F" & Ligne)
    End With

    'Application.DisplayAlerts = True '.....................réactive le message d'alerte
    'Application.CutCopyMode = False '......................désactive la copie
Next A
End Sub

NB :
- A quoi sert la variable WB_D ? Vous ne l'utilisez pas plus bas
- dans la feuille trvx, j'ai supposé que la colonne B est complètement remplie car on se base sur cette colonne pour trouver la dernière ligne à copier

Cordialement

Bonjour DAN,

je vous remercie pour votre retour,

mais je ne vous pourquoi vous avez modifié mon code,

mon code est bon, il fonctionne parfaitement,

sauf que la talle de la table d'ou j'importe les lignes est variables,

c'est a dire dans mon état actuelle :

Sheets("programme global").Range("b4:L988").SpecialCells(xlCellTypeVisible).Select

la table contient 988 ligne, je filtre puis je copie ce qui est visible,

le problème est que si ma table contient plus de 988 lignes, par exemple 1000 ligne, comment ajuster ma ligne de code pour qu'elle filtre et copie selon le nombre de ligne

Sheets("programme global").Range("b4:L'Nbre de ligne variable à ajuster'").SpecialCells(xlCellTypeVisible).Select

merci

imad

mais je ne vous pourquoi vous avez modifié mon code, mon code est bon, il fonctionne parfaitement, sauf que la talle de la table d'ou j'importe les lignes est variables,

Je vous ai évité les SELECT qui ne servent à rien dans un code.

Avec ce que je vous propose, cela tient compte de votre souci.
Avez-vous testé au moins ?

NB : dans mon dernier post, j'ai changé la ligne juste avant le END WITH en ajoutant la variable LIGNE. Donc testez sur ce code là

Rechercher des sujets similaires à "ajustement copier coller"