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 !