Bonjour à toutes et à tous,
Etant amateur débutant en vba, je me suis penché sur une macro pour le travail mais je bloque sur une partie.
Je souhaiterais faire une boucle qui à partir d'une donnée d'un classeur, retrouve dans un second classeur la ligne où se trouve cette valeur afin d'effacer un élément sur cette ligne.
J'ai simulé mon code sur un seul et même classeur et aucun erreur n'apparait. Cependant dès que je passe au deux classeurs séparés cela m'affiche l'erreur dans le titre de mon message. J'en déduis donc que le problème vient de l'identification du classeur mais je ne trouve pas comment le résoudre.
Si quelqu'un avait une solution pour moi, il/elle serait le/la bienvenu(e)
Voici mon code:
Sub effacer()
Dim CD As Workbook 'Classeur Destination
Dim OD As Worksheet 'Onglet Destination
Dim CS As Workbook 'Classeur Source
Dim OS As Worksheet 'Onglet source
Dim LIGNE As Long
Dim LI As Long 'N° de ligne où effacer
Dim CBS As Variant 'Valeur à retrouver
Dim R As Range 'Recherche
Set CD = ActiveWorkbook
Set OD = CD.Worksheets(1)
Set CS = Application.Workbooks.Open(" 'Classeur en question' ")
Set OS = CS.Worksheets(1)
LIGNE = 2
Do While LIGNE <= 41
CBS = OS.Cells(LIGNE, 3).Value
Set R = OD.Columns(34).Find(CBS, , xlValues, xlWhole)
LI = R.Row 'ERREUR
OD.Cells(LI, 32).Delete
LIGNE = LIGNE + 1
Loop
End Sub
Etant amateur débutant en vba, je me suis penché sur une macro pour le travail mais je bloque sur une partie.
Je souhaiterais faire une boucle qui à partir d'une donnée d'un classeur, retrouve dans un second classeur la ligne où se trouve cette valeur afin d'effacer un élément sur cette ligne.
J'ai simulé mon code sur un seul et même classeur et aucun erreur n'apparait. Cependant dès que je passe au deux classeurs séparés cela m'affiche l'erreur dans le titre de mon message. J'en déduis donc que le problème vient de l'identification du classeur mais je ne trouve pas comment le résoudre.
Si quelqu'un avait une solution pour moi, il/elle serait le/la bienvenu(e)
Voici mon code:
Sub effacer()
Dim CD As Workbook 'Classeur Destination
Dim OD As Worksheet 'Onglet Destination
Dim CS As Workbook 'Classeur Source
Dim OS As Worksheet 'Onglet source
Dim LIGNE As Long
Dim LI As Long 'N° de ligne où effacer
Dim CBS As Variant 'Valeur à retrouver
Dim R As Range 'Recherche
Set CD = ActiveWorkbook
Set OD = CD.Worksheets(1)
Set CS = Application.Workbooks.Open(" 'Classeur en question' ")
Set OS = CS.Worksheets(1)
LIGNE = 2
Do While LIGNE <= 41
CBS = OS.Cells(LIGNE, 3).Value
Set R = OD.Columns(34).Find(CBS, , xlValues, xlWhole)
LI = R.Row 'ERREUR
OD.Cells(LI, 32).Delete
LIGNE = LIGNE + 1
Loop
End Sub