Méthode Range

Bonjour a tous,

Voila je cherche a copier une plage de cellule (dans un le classeur) dans un autre autre classeur classeur (classeur2).

Jusque là, la question est assez simple.

Sauf que la macro se trouve dans le classeur qui doit recevoir la plage de cellule (cad le classeur2).

Donc la macro ouvre le classeur1 , sélectionne la plage de cellule la copie et la colle a l'endroit voulu.

Jusque la tout va bien

Maintenant la plage de cellule à sélectionner n'est pas fixe puisque si elle l'était certaines cellules pourrais être vide et impacterais fortement le reste de la macro.

Donc le deal est de déterminer la dernière cellule renseignée de la colonne 1 du classeur 1 (la première cellule étant toujours la même).

pour déterminer cette dernière cellule j'utilise le code suivant :

Public Function DerniereLigne(Feuille As String, IndiceColonne As Integer) As Integer
Dim aRow As Integer
    Ligne = 0
    aRow = 10
    Do
        If Worksheets("DATA").Cells(aRow, IndiceColonne).Value <> "" Then
            aRow = aRow + 1
        Else
            Ligne = aRow
        End If
    Loop Until Ligne > 0
    DerniereLigne = Ligne
End Function

Ce code fonctionne très bien

Maintenant je cherche a sélectionner la plage a copier.

Voici le code que j'ai écrit :

Private Sub CommandButton1_Click()

Workbooks.Open Filename:="chemin\classeur1.xls"
Windows("classeur1.xls").Activate
Sheets("DATA").Select

Ligne = DerniereLigne("DATA", 1)                           ' ligne = numéro de la dernière ligne a prendre dans la plage de cellule à sélectionner

[u]Range("A10:Cells(Ligne, 1)").Select[/u]
Selection.Copy
Windows("classeur2.xls").Activate
Sheets("Feuil1").Select
Range("A10").Select
Sheets("Feuil1").Select
ActiveSheet.Unprotect
Range("A10").Select
ActiveSheet.Paste
Windows("classeur1.xls").Activate
Workbooks("classeur1.xls").Close
Application.CutCopyMode = False
End Sub

Maintenant j'ai une erreur "La méthode 'Range' de l'objet '_global' a échoué" ( la ligne soulignée)

Mais je ne sais pas comment écrire cette ligne.

Merci

Bonjour

Essayes

Range("A10:A" & Ligne).Select

On pourrait simplifier ton code si tu le désires

Dans ce cas joins ton fichier

Salut,

J'ai essayé ton code mais marche pas.

par contre ça marche avec celui la :

Range("A" & 10, "A" & Ligne).Select

(une "," a la place des ":")

Je vais continuer d'avancer sur le code. je reviendrais probablement pour d'autres questions :

On simplifiera le code quand la macro sera terminée si ça ne t'ennuie pas.

Merci et a Bientôt

Bonjour

Tu m'inquiètes si tu me dis que ce code ne fonctionne pas

Range("A10:A" & Ligne).Select

J'ai fais un test

Sub test()
Ligne = 20
Range("A10:A" & Ligne).Select
End Sub

Et pas de souci

Rechercher des sujets similaires à "methode range"