Erreur "bloc with"
Résolu
Bouhyaa
-
eriiic Messages postés 25847 Statut Contributeur -
eriiic Messages postés 25847 Statut Contributeur -
Bonjour,
Ci-dessous un extrait de mon code :
...
...
en gros voila j'utilise la fonction Cells.find pour chercher une valeur dans mon tableau et la cellule selectionné par celle.find me sert de base pour me deplacer apres dans la feuille. (j'espere que c'est possible ^^ )
donc voila le bout de code que j'ai fait dans le but de réaliser ca, mais il m'apparrait un message d'erreur : "variable objet ou variable bloc with non défini"
que dois je faire ?
merci d'avance
bonne fetes
ci-apres le code en entiers au cas ou l'extrait était mal choisis ;)
<config>Windows Vista / Internet Explorer 9.0</config>
Ci-dessous un extrait de mon code :
...
Windows("PROGATEL.xls").Activate
Range("N2 : N" & NbLigne).Select
Cells.Find(What:=ARport, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
While ARport = ARsuiv
Selection.Offset(0, -11).Select
Designation = ActiveCell.Text
...
en gros voila j'utilise la fonction Cells.find pour chercher une valeur dans mon tableau et la cellule selectionné par celle.find me sert de base pour me deplacer apres dans la feuille. (j'espere que c'est possible ^^ )
donc voila le bout de code que j'ai fait dans le but de réaliser ca, mais il m'apparrait un message d'erreur : "variable objet ou variable bloc with non défini"
que dois je faire ?
merci d'avance
bonne fetes
ci-apres le code en entiers au cas ou l'extrait était mal choisis ;)
Public Sub extractionDate()
Dim i As Long, j As Long, ARport As String, ARsuiv As String, Designation As String
Dim DateBrut As Date, DateAppro As Date, DateLimiteBrut As Date, DateLimiteAppro As Date
'================== Prerequis ==========================
Application.ScreenUpdating = False
Windows("PROGATEL.xls").Activate
Columns("L:L").Select ' mets la date dans le formant reconnu par la macro
Selection.NumberFormat = "dd/mm/yy"
Windows("PORTANF fin 11-2011.xlsm").Activate
Columns("N:N").Select
Selection.NumberFormat = "000000000"
Range("E2").Select ' Selectionne la première cellule du tableau
While Not (ActiveCell = "") ' Boucle tant que pas vide
NbLigne = NbLigne + 1
Selection.Offset(1, 0).Select
Wend
Windows("PROGATEL.xls").Activate
Range("N2").Select ' Selectionne la première cellule du tableau
While Not (ActiveCell = "") ' Boucle tant que pas vide
NbLigneB1 = NbLigneB1 + 1
Selection.Offset(1, 0).Select
Wend
j = 2
While j < NbLigneB1 + 1
Windows("PROGATEL.xls").Activate
Range("L" & j).Select
R = ActiveCell.Text
If R = "" Then
ActiveCell.FormulaR1C1 = #1/1/2000#
Range("IV" & j).Select
ActiveCell.FormulaR1C1 = 1
End If
j = j + 1
Wend
i = 2
j = 2
hdate = #1/1/2001#
DateLimiteAppro = #1/1/2001#
DateLimiteBrut = #1/1/2001#
DateAppro = #1/1/2001#
DateBrut = #1/1/2001#
'======================== Programme ==========================
While i < NbLigne + 1
Windows("PORTANF fin 11-2011.xlsm").Activate
Range("E" & i).Select
ARport = ActiveCell.Text
ARsuiv = ARport
Windows("PROGATEL.xls").Activate
Range("N2 : N" & NbLigne).Select
Cells.Find(What:=ARport, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
While ARport = ARsuiv
Selection.Offset(0, -11).Select
Designation = ActiveCell.Text
If Right(Designation, 2) = " B" Then
Selection.Offset(0, 9).Select
DateBrut = ActiveCell.Text
If DateBrut > DateLimiteBrut Then
DateLimiteBrut = DateBrut
End If
Else '//////////////////////////////////////////////////////////
Selection.Offset(0, 9).Select
DateAppro = ActiveCell.Text
If DateAppro > DateLimiteAppro Then
DateLimiteAppro = DateAppro
End If
End If
Range("N2 : N" & NbLigne).Select
Cells.Find(What:=ARport, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Selection.Offset(1, 0).Select
ARsuiv = ActiveCell.Text
Wend
Windows("PORTANF fin 11-2011.xlsm").Activate 'inscrit la date limite des _B
Range("AY" & i).Select
ActiveCell.FormulaR1C1 = DateLimiteBrut
Windows("PORTANF fin 11-2011.xlsm").Activate 'inscrit la date limite des Appro
Range("AZ" & i).Select
ActiveCell.FormulaR1C1 = DateLimiteAppro
i = i + 1
Wend
'===================Cloture/Remise en forme=======================
j = 2
While j < NbLigneB1 + 1
Windows("PROGATEL.xls").Activate
Range("IV" & j).Select
R = ActiveCell.Text
If R = 1 Then
Range("L" & j).Select
ActiveCell.FormulaR1C1 = ""
Range("IV" & j).Select
ActiveCell.FormulaR1C1 = ""
End If
j = j + 1
Wend
Windows("PROGATEL.xls").Activate
Columns("L:L").Select ' remet la date dans son format progatel
Selection.NumberFormat = "ddmmyy"
Windows("PORTANF fin 11-2011.xlsm").Activate
Columns("N:N").Select
Selection.NumberFormat = "00-00-00"
Application.ScreenUpdating = True
End Sub
<config>Windows Vista / Internet Explorer 9.0</config>
A voir également:
- Erreur "bloc with"
- Bloc-notes (windows) - Télécharger - Traitement de texte
- Bloc note gratuit - Télécharger - Agendas & Calendriers
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
5 réponses
Bonsoir,
En regardant rapidement ton code, tu as déjà deux variables (NbLigne et NbLigneB1) non définies.
m@rina
En regardant rapidement ton code, tu as déjà deux variables (NbLigne et NbLigneB1) non définies.
m@rina
je tiens a préciser que l'erreur apparait sur la fonction mise en gras ci-dessous :
...
...
merci
...
Windows("PROGATEL.xls").Activate
Range("N2 : N" & NbLigne).Select
Cells.Find(What:=ARport, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate While ARport = ARsuiv Selection.Offset(0, -11).Select
Designation = ActiveCell.Text
...
merci
Bonjour,
Un fichier exemple aurait été le bienvenu...
Sans tester je ferais en 2 temps via une variable.
Par ailleurs évite les .select inutiles, ton code en est bourré et ça ralenti.
ex, remplacer :
Un fichier exemple aurait été le bienvenu...
Sans tester je ferais en 2 temps via une variable.
dim c as range set c = cells.find(...) if not c is nothing then .... else ... endif
Par ailleurs évite les .select inutiles, ton code en est bourré et ça ralenti.
ex, remplacer :
Range("L" & j).Select
ActiveCell.FormulaR1C1 = ""par :
Range("L" & j).FormulaR1C1 = ""eric
merci pour le racourci pour eviter les variable !! ;)
pour le passage en deux temps c'est pas un mauvaise idée, j'ai essayé, j'ai essayé, peut-etre mal ;) mais j'ai toujours la même erreure ...
voila ce que ca donne :
pour le passage en deux temps c'est pas un mauvaise idée, j'ai essayé, j'ai essayé, peut-etre mal ;) mais j'ai toujours la même erreure ...
voila ce que ca donne :
Windows("PROGATEL.xls").Activate
Range("N2 : N" & NbLigne).Select
Set c = Cells.Find(What:=ARport, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Value
If Not c = "" Then
While ARport = ARsuiv
....
wend
end if
c = ""
Salut tous,
Pourquoi ajouter .Value en fin de méthode find?
Tout simplement :
tu cherches l'objet range contenant dans une formule ARport :
Et ensuite, si tu le trouve :
et si tu ne le trouve pas :
PS : je vais répéter Eriiic, si tu veux un coup de main plus efficace, commence par nettoyer ton code...
Pourquoi ajouter .Value en fin de méthode find?
Tout simplement :
tu cherches l'objet range contenant dans une formule ARport :
Dim c As Range
Set c = Range("N2 : N" & NbLigne).Cells.Find(What:=ARport, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
Et ensuite, si tu le trouve :
If Not c is Nothing then MsgBox "youpi on l'a trouvé en " & c.address
et si tu ne le trouve pas :
Else MsgBox "zut yépala!" End If
PS : je vais répéter Eriiic, si tu veux un coup de main plus efficace, commence par nettoyer ton code...
??? Incompatibilité de type devrait signifier que quelque part une variable serait déclarée d'un type et que l'on tente d'y attribuer autre chose...
Ou pas...???
Là on va y aller à tâtons et ce sujet risque bien fort d'atteindre les 300 réponses...
Dis nous ce que tu veux faire avec la méthode find, étape par étape, en précisant bien par exemple :
Je cherche dans les formules de la colonne E de la feuille Feuil3 du classeur machin.xls si on trouve le chiffre 13 dans les formules...
Ou pas...???
Là on va y aller à tâtons et ce sujet risque bien fort d'atteindre les 300 réponses...
Dis nous ce que tu veux faire avec la méthode find, étape par étape, en précisant bien par exemple :
Je cherche dans les formules de la colonne E de la feuille Feuil3 du classeur machin.xls si on trouve le chiffre 13 dans les formules...
Re,
Quand on ecrit Is Nothing arrete de le remplacer à ta sauce par = ""
Ce n'est pas la même chose et ce n'est pas pour rien qu'on l'écrit ainsi.
eric
Quand on ecrit Is Nothing arrete de le remplacer à ta sauce par = ""
Ce n'est pas la même chose et ce n'est pas pour rien qu'on l'écrit ainsi.
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
merci quand meme de préter attention a mon message ^^