Se connecter / S'enregistrer
Votre question

[RESOLU] VBA - Récupérer le numéro de ligne dans une variable

Tags :
  • Copier coller
  • Programmation
Dernière réponse : dans Programmation
7 Octobre 2010 09:48:49

Bonjour à tous ! :hello: 

Ce que je cherche à faire :
La date d'aujourd'hui est inscrite dans la cellule B1 de la feuille Formulaire. Je souhaite rechercher cette valeur dans la feuille Calcul1 pour ensuite pouvoir copier/coller des informations situées dans la feuille Formulaire vers le feuille Calcul1 en fonction de la date.
J'ai donc le numéro de ligne qui varie puisque il dépend de ma recherche. Les colonnes sont toujours fixes.

Mon problème:
Lorsque je lance la macro via un bouton, un message d'erreur apparait me disant qu'il manque à priori un objet. J'ai bien recherché sur la toile la solution, à chaque fois testée, mais je n'y arrive toujours pas.

Mon code :
  1. Private Sub CommandButton1_Click()
  2. With Worksheets("Calcul1").Range("A3:A367")
  3. Set mdrdate = Worksheets("Formulaire").Range("B1")
  4. Set mdr = .Find(mdrdate, LookIn:=xlValues)
  5. If Not mdr Is Nothing Then
  6. firstAddress = mdr.Address
  7. Do
  8. Set xmdr.Row = ActiveCell.Row //<= c'est là que ça coince à chaque fois :??:
  9. Loop While Not c Is Nothing And mdr.Address <> firstAddress
  10. End If
  11. Worksheets("Formulaire").Range("E10:Q10").Copy
  12. ActiveSheet.Paste Destination:=Worksheets("Calcul1").Range(.Cells(xmdr, 3), .Cells(xmdr, 15))
  13. Worksheets("Formulaire").Range("E11:Q11").Copy
  14. ActiveSheet.Paste Destination:=Worksheets("Calcul1").Range(.Cells(xmdr, 16), .Cells(xmdr, 28))
  15. Worksheets("Formulaire").Range("E12:Q12").Copy
  16. ActiveSheet.Paste Destination:=Worksheets("Calcul1").Range(.Cells(xmdr, 29), .Cells(xmdr, 41))
  17. Worksheets("Formulaire").Range("E13:Q13").Copy
  18. ActiveSheet.Paste Destination:=Worksheets("Calcul1").Range(.Cells(xmdr, 42), .Cells(xmdr, 54))
  19. End With
  20. End Sub



Si vous pouviez m'aider ce serait fort aimable de votre part !

Merci !

Autres pages sur : resolu vba recuperer numero ligne variable

a c 232 L Programmation
7 Octobre 2010 12:27:34

Salut,

Ta variable s'appelle "mdr" et là tu mets "xmdr" ?
Tu as bien deux variables, une "mdr" et une "xmdr" ? (d'ailleurs, des noms un peu plus explicites pourraient être mieux... :) )
m
0
l
8 Octobre 2010 22:07:10

Merci pour la réponse.
Tout d'abord, le nom des variables :
-mdr pour Manufacturing Default Rate, soit le taux de défaut fabrication
-xmdr : X pour la coordonnées des abscisses, qui devrait être y en y repensant... lol

J'ai trouvé là où ça clochait : je déclarais 2 variables alors qu'une seule me suffisait. Au final, voici ce que cela donne :
Private Sub CommandButton1_Click()
With Worksheets("Calcul").Range("A3:A367")
'Enregistrer dans une variable la date du jour.
Set mdrdate = Worksheets("Formulaire").Range("B1")
'Rechercher la date du jour dans la feuille Calcul
Set mdr = .Find(mdrdate, LookIn:=xlValues)
'Définir et enregistrer dans une variable le numéro de la ligne de la date trouvée dans la feuille Calcul
Dim X As Integer
X = mdr.Row
'Copier/Coller les données F400 du formulaire vers la feuille de calcul
Worksheets("Formulaire").Range("E10:Q10").Copy
ActiveSheet.Paste Destination:=Worksheets("Calcul").Range(.Cells(X - 2, 3), .Cells(X - 2, 15))
'Copier/Coller les données MC Set 4 du formulaire vers la feuille de calcul
Worksheets("Formulaire").Range("E11:Q11").Copy
ActiveSheet.Paste Destination:=Worksheets("Calcul").Range(.Cells(X - 2, 16), .Cells(X - 2, 28))
'Copier/Coller les données SM6-36 du formulaire vers la feuille de calcul
Worksheets("Formulaire").Range("E12:Q12").Copy
ActiveSheet.Paste Destination:=Worksheets("Calcul").Range(.Cells(X - 2, 29), .Cells(X - 2, 41))
'Copier/Coller les données MC 500 du formulaire vers la feuille de calcul
Worksheets("Formulaire").Range("E13:Q13").Copy
ActiveSheet.Paste Destination:=Worksheets("Calcul").Range(.Cells(X - 2, 42), .Cells(X - 2, 54))
End With
End Sub

Ça n'était finalement pas bien compliqué. :)  En réfléchissant un peu plus... :) 
m
0
l
Contenus similaires
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS