Erreur 1004 : La méthode 'Range' de l objet '_Global' a échoué

Bonjour à tous ! Comme l'indique le titre, je suis face à l'erreur 1004 dans Excel 2010. J'ai farfouillé et regardé bon nombre de questions/réponses sur cette erreur, mais aucune ne correspond à mon cas. La plupart des erreurs 1004 sont liées à des histoires de plusieurs classeurs ouverts : ce n'est pas mon cas. Je vous présente donc aujourd'hui mon problème :

Je souhait faire une procédure qui recherche dans un fichier excel une case avec un mot particulier et qui copie tout ce qu'il y a en dessous en considérant qu'il y a normalement en dessous des cases avec des données, parfois vides.

Après je souhaite coller ceci à un autre endroit dans le fichier.

J'ai fait un fichier Test que je vous joins, la procédure est censée copier les numéros de 40 à 28 sous la case "cadenas utilisés" et les coller un peu plus à droite dans le fichier (l'emplacement de copie a peu d'importance). Tout fonctionne bien à part mon Range final qui m'indique l'erreur 1004 alors qu'il a exactement ce qu'il veut en argument. Toutes les aides sont les bienvenues ! Merci d'avance

23test.xlsm (21.94 Ko)

Bonjour,

a priori l'erreur n'est pas sur le range final mais sur celui d'avant:

Column_Cadenas_utilisés = Range(First_Cell, Last_Cell).Value 'copie

First_Cell et Last_Cell sont des variables contenant une valeur numérique (respectivement 40 et 28, a priori le contenu de A5 et A18) ....alors que Range attends une (ou plusieurs) plage de cellule.

A+

Bonjour,

Remplaces :

Column_Cadenas_utilisés = Range(First_Cell, Last_Cell).Value 'copie

par :

Column_Cadenas_utilisés = Cells(First_Cell, Last_Cell).Value 'copie

La propriété "Range" attend deux "Ranges" et non des numériques !

expression.Range(Cellule1, Cellule2)

Bonjour, merci à vous deux pour vos réponses ! Theze, ta proposition ne correspond pas à mon cas, je souhaite copier/coller la plage de cellules, si je remplace Range par Cells, cela ne copie que la cellule à certaines coordonnées (First_Cell, Last_Cell en l'occurence).

Comme le fait remarquer Algoplus, le problème vient du fait que First_Cell, Last_Cell prennent des valeurs numériques alors que j'aurais voulu qu'ils conservent chacun l'entièreté de la cellule que je leur attribue, pour en faire les 2 cellules de mon Range (et donc avoir ma plage). Mais bizarrement, Excel semble faire un .Value au moment de leur attribution.

J'ai donc supprimé mes First_Cell et Last_Cell, j'ai stocké les coordonnées de ma First_Cell dans Row_Offset_Final et dans Column_Offset_Final

J'ai donc modifié comme ceci pour la fin du code :

Row_Offset_Final = Row_Offset + 2

Column_Offset_Final = Column_Offset + 1

First_Cell = Cells(Row_Offset + 2, Column_Offset + 1)

blank = 0

While Not blank = 30

If ActiveCell.Offset(Row_Offset, Column_Offset).Value = "" Then

blank = blank + 1

Else

blank = 0

End If

Row_Offset = Row_Offset + 1

Wend

Last_Cell = Cells(Row_Offset - 30, Column_Offset + 1)

Column_Content = Range(Cells(Row_Offset_Final, Column_Offset_Final), Cells(Row_Offset - 30, Column_Offset + 1)).Value 'copie

Range(Cells(20, 20), Cells(33, 20)).Value = Column_Content 'colle

End Sub

Pour l'instant, ça fonctionne ! Merci à tous !

Bonjour à tous

Si le but était de déterminer une plage à l'aide de First_Cell et Last_Cell, il aurait fallu les déclarer en Range pour pouvoir "récupérer" leur adresse.

Dim First_Cell As Range, Last_Cell As Range
.../...
Set First_Cell = Cells(Row_Offset + 2, Column_Offset + 1)
.../...
Set Last_Cell = Cells(Row_Offset - 30, Column_Offset + 1)
Column_Cadenas_utilisés = Range(First_Cell.Address & ":" & Last_Cell.Address).Value 'copie dans un tableau

A+

Bonjour,

AlgoPlus

ou tout simplement (et là, avec des Ranges ça fonctionne) :

Column_Cadenas_utilisés = Range(First_Cell, Last_Cell).Value 'copie dans un tableau
Rechercher des sujets similaires à "erreur 1004 methode range objet global echoue"