Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Variable Object ou variable de bloc With non définie

ocon

XLDnaute Nouveau
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
 
Solution

Ta réponse était bien la solution je t'en remercie.
Apres avoir revu ma syntaxe j'en suis arrivé au code suivant qui finalement fonctionne.
VB:
Sub suppr()

Dim CD As Workbook 'Classeur Destination'
Dim OD As Worksheet 'Onglet Destination'
Dim CS As Workbook...

ocon

XLDnaute Nouveau

Ta réponse était bien la solution je t'en remercie.
Apres avoir revu ma syntaxe j'en suis arrivé au code suivant qui finalement fonctionne.
VB:
Sub suppr()

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 DernLigne As Long 'Dernière ligne de OD'
Dim LCB As Integer 'pour remplir colonne AH'
Dim LIGNE As Long 'ligne de la recherche'
Dim LI As Long 'ligne à effacer'
Dim CBS As Variant 'valeur à rechercher'
Dim R As Range 'Recherche'
Dim plage As Range 'colonne AH'

Set CD = ActiveWorkbook
Set OD = CD.Worksheets(1)
Set CS = Application.Workbooks.Open("Classeur source")
Set OS = CS.Worksheets(1)

'Boucle pour afficher numero de bail'
DernLigne = OD.Range("A" & Rows.Count).End(xlUp).Row
LCB = 1
Do While LCB <= DernLigne
    LCB = LCB + 1
    OD.Cells(LCB, 34).Value = OD.Cells(LCB, 7).Value & "-" & OD.Cells(LCB, 8).Value
Loop
'Fin de boucle'

'Boucle effacement'
LIGNE = 2
Set plage = Range("AH1", Cells(DernLigne, "AH"))
Do While LIGNE <= 42
    CBS = OS.Cells(LIGNE, 3).Value
    Set R = OD.Range("AH2:AH" & DernLigne).Find(CBS, , xlValues, xlWhole)
    LI = R.Row
    OD.Cells(LI, 32).Clear
    LIGNE = LIGNE + 1
Loop
'Fin de boucle'

End Sub

Merci à tous pour vos réponses
 

Discussions similaires

Réponses
9
Affichages
342
Réponses
2
Affichages
348
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…