VBA Range avec ligne variable

Bonjour,

J'avance sur l'écriture d'une macro mais le code bloque sur la ligne de copie

Sub Modifier_fiche()

'Permet d'éviter les A/R entre les feuilles lors de la copie
Application.ScreenUpdating = False

'Décalration et identification des variables
Dim Line As String
Dim FoundCell As Range
Dim myRow As Long

'Récupère le numéro ID à modifier
Line = Sheets("Reporting").Range("K21").Value

'Récupère le numéro ID à modifier
Line = Range("K19").Value

'Recherche et copie les données de la ligne
Sheets("Reporting").Select
Set FoundCell = Range("A:A").Find(what:=Line)
myRow = FoundCell

Range(Cells(myRow, 2), Cells(myRow, 31)).Copy

'Colle les données de la ligne

Sheets("Formulaire").Activate
Range("D10").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
 False, Transpose:=True

End Sub

Une idée de ce qui peut blqouer?

Merci d'avance de votre aide,

Bonne journée !

Bonjour

Dans ta macro, Foundcell est une cellule que tu définies correctement :

Set FoundCell = …

Puis tu définie la variable myRow comme étant cette cellule :

myRow = FoundCell

Et là, myRow est mal défini puisque tu veux que ce soit une cellule.

Mais pourquoi ne gardes-tu pas FoundCell ?

Avec ton fichier, si tu l’avais joint, j’aurais aimé pourvoir essayer…

Bye !

Bonjour GMB,

Effectivement, j'ai tendance à souvent oublier les pièces jointes... Erreur modifiée !

Pourquoi ne pas garder FoundCell?

Eh bien j'ai essayé, mais Excel me renvoie l'erreur

[quote]['1004' Erreur définie par l'application ou par l'objet/quote]

sur la ligne

Range(Cells(FoundCell, 2), Cells(FoundCell, 15)).Copy

De même, j'essaye enfait de définir le numéro de la ligne de la cellule FoundCell.

Je fais donc à priori erreur sur l'écriture de myRow?

Merci de ton aide et bonne journée,

Jay

C'est bon, après trois jours la tête dans le guidon j'ai compris mon erreur..toute bête..

ma variante Line n'était pas correctement définie, la feuille n'était pas la bonne !

Merci quand même !

Tu écris :

Je fais donc à priori erreur sur l'écriture de myRow?

Il y a sûrement plus que cela.

En faisant avancer ta macro pas à pas sur ton fichier, je constate des anomalies :

• Tu définies la variable ‘’line’’ comme contenant la valeur de la cellule K21 de la feuille ‘’Reporting’’ :

line = Sheets("Reporting").Range("K21").Value

Or, cette cellule est vide.

• Tu définies la cellule FoundCell comme étant celle qui contient la valeur de ta variable ‘’line’’ dans la colonne A de la feuille ‘’Reporting’’ :

Sheets("Reporting").Select
Set FoundCell = Range("A:A").Find(what:=line)

FoundCell est donc la première cellule vide rencontrée dans la colonne A

Je doute que ce soit là ce que tu recherches…

• L’instruction suivante est incorrecte :

Range(Cells(FoundCell, 2), Cells(FoundCell, 15)).Copy

Pour lui en donner, il te faudrait écrire :

Range(Cells(FoundCell.Row, 2), Cells(FoundCell.Row, 15)).Copy

Essaie de corriger tout cela et attaque-toi aux autres macros : il me semble qu’elles sont de la même veine !

Merci de tes réponses !

J'ai corrigé de la manière suivante :

'Récupère le numéro ID à modifier
Line = Sheets("Formulaire").Range("J21").Value

'Recherche le numéro de la ligne correspondant à l'ID
Sheets("Reporting").Select
Set FoundCell = Range("A:A").Find(what:=Line)
myRow = FoundCell.Row

'Recherche et copie / colle les données de la ligne 
Range(Cells(myRow, 2), Cells(myRow, 15)).Copy

Ce qui avait résolu mon problème.

J'ai corrigé selon tes conseils, et effectivement cela fonctionne et allège le code !

J'ai donc repris la macro qui permet de valider ces modifications pour laquelle j'avais le même souci!

Super un grand merci !!

Maintenant, je sais que mon code est loin d'être joli pour des , mais disons que c'est fonctionnel et qu'avec le temps et les erreurs j'apprends !

Encore merci et une bonne journée !

Rechercher des sujets similaires à "vba range ligne variable"