Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Copier une plage de cellules en paramétré VBA

chris4785478547

XLDnaute Junior
Bonjour à tous,
Je n'arrive pas à trouver la bonne syntaxe pour copier une plage de cellules en paramétré en VBA.
Je veux copier un tableau avec 5 colonnes de A à E
Le nombre de lignes est variable, c'est la raison pour laquelle je souhaite paramétrer
j'ai le nombre de lignes à copier qui se trouve en cellule F25 de la même feuille (qui dans le cas présent vaut 9)
Je pensais pouvoir faire quelque chose comme:
range("A1:E" & F25).copy
Mais j'obtiens une erreur 1004: "la méthode range de l'objet global a échoué"
Merci par avance les p'tits loups !
Chris
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, chris, job75

=>chris
Comme on n'a pas vue passer la fonction souhaitée
(postée par tes soins pour notre gouverne)
En voici une (juste à titre illustratif)
VB:
Sub test()
MaCopie Sheets(1), "A1:E", Sheets(1).[F25]
Sheets(2).Paste
Application.CutCopyMode = False
End Sub
Private Function MaCopie(Feuille As Worksheet, Adresse, NombreLigne As Range)
Feuille.Range(Adresse & NombreLigne.Value).Copy
End Function

NB: La prime motivation qui fait exister ce bout de code c'est comment utiliser son temps pendant le confinement )
 

chris4785478547

XLDnaute Junior
Bonsoir à tous, Job, Staple,
=>Staple

Effectivement, je ne l'ai pas postée jusque là mais si ça t'intéresse, je me fais un plaisir de la fournir ici:

VB:
Sub Prélevement_auto()
 
Dim i, j, k, DerniereLigneOccupee As Long
Dim Dest As Range


    Sheets("SAISIE COMPTES ").Select
    DerniereLigneOccupee = Range("O1007")
    NombreDeLignesAEffacer = Range("P2") - (Range("Q2") - DerniereLigneOccupee)
    If (NombreDeLignesAEffacer > 0) Then
        For i = 7 To 7 + NombreDeLignesAEffacer - 1
        SupLig
        Next i
    End If
    
    
    Sheets("PRELEVEMENTS AUTO").Select
    Range("A1:E" & Range("F25")).Copy
        
   ' Selection.Copy
  
    Sheets("SAISIE COMPTES ").Select
    Range("A7").End(xlDown).Offset(1, 0).Select
    
    Set Dest = Selection
    
    Dest.PasteSpecial Paste:=xlValues
    Application.CutCopyMode = False
    
End Sub

Chaleureuses salutations et à très vite
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

=>Chris
Cela pourrait intéresser les lecteurs du fil en général.
(ou permettre interaction entre demandeur et répondeur)
La preuve
Enrichi (BBcode):
Sub Prélevement_auto_variante()
Dim t
'
'....
'Uniquement pour la partie recopie
t = Sheets("PRELEVEMENTS AUTO").Range("A1:E" & Range("F25")).Value
Sheets("SAISIE COMPTES").Cells(Rows.Count, 1).End(3)(2).Resize(UBound(t, 1), UBound(t, 2)) = t
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…