Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

on error go to qui ne fonctionne pas

10 réponses
Avatar
daniel
bonjour,
je rencontre un problème dans une macro, sur une erreur,
le code suivant me donne le message suivant


Erreur d'exécution '91' :
Variable objet ou variable de bloc with non définie

If NumAutoOld <> "" Then
Cells.Find(What:=NumAutoOld, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
Cells.FindPrevious(After:=ActiveCell).Activate
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
Range("B5").Select

ActiveSheet.Next.Select
Range("B5").Select


C'est ici que cela plante, mais le on error devrait passer la recherche
puisqu'il ne trouve pas le numéro ????
On Error GoTo PASS
Do Until Cells.Find(What:=NumAutoOld, After:=ActiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate = False 'True
Cells.FindPrevious(After:=ActiveCell).Activate
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
Range("B5").Select

Loop
PASS:
On Error GoTo 0
End If

De plus, je rencontre le même type de problème dans une autre macro, message
du 08/10/2006 à 10:40, macro testée par JLuc et LSteph qui fonctionne très
bien chez eux. Y aurait'il un souci sur ma machine et comment le résoudre
???
Merci par avance.

10 réponses

Avatar
Pierre Fauconnier
Bonjour

1. As-tu essayé de compiler ton code (Dégogage/Compiler VBAProject) ?

2. Il est possible de simplifier ta macro car tu utilises beaucoup de
Activate et de Select, alors qu'à mon avis tu pourrais travailler avec un
objet Range ou Cell.

Ok?
--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Les choses qui n'ont rien en commun ont en commun qu'elles n'ont rien en
commun"
Remplacez nospam.nospam par pfi.be pour répondre. Merci


"daniel" a écrit dans le message de news:

bonjour,
je rencontre un problème dans une macro, sur une erreur,
le code suivant me donne le message suivant


Erreur d'exécution '91' :
Variable objet ou variable de bloc with non définie

If NumAutoOld <> "" Then
Cells.Find(What:=NumAutoOld, After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse).Activate
Cells.FindPrevious(After:¬tiveCell).Activate
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
Range("B5").Select

ActiveSheet.Next.Select
Range("B5").Select


C'est ici que cela plante, mais le on error devrait passer la recherche
puisqu'il ne trouve pas le numéro ????
On Error GoTo PASS
Do Until Cells.Find(What:=NumAutoOld, After:¬tiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse).Activate = False 'True
Cells.FindPrevious(After:¬tiveCell).Activate
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
Range("B5").Select

Loop
PASS:
On Error GoTo 0
End If

De plus, je rencontre le même type de problème dans une autre macro,
message du 08/10/2006 à 10:40, macro testée par JLuc et LSteph qui
fonctionne très bien chez eux. Y aurait'il un souci sur ma machine et
comment le résoudre ???
Merci par avance.



Avatar
daniel
Bonjour et merci,
Je viens de compiler le code, essayer, fermer le fichier, essayer,
l'enregistrer sous un autre nom, mais ça ne fonctionne toujours pas.
Je crains que ce soit du même ordre que mon problème du 08/10.


Pour le 2ème point, je suis preneur, mais je ne sais pas comment simplifier,
j'avance très doucement en VBA.
2. Il est possible de simplifier ta macro car tu utilises beaucoup de
Activate et de Select, alors qu'à mon avis tu pourrais travailler avec un
objet Range ou Cell.

Ok?


Avatar
Pierre Fauconnier
Peux-tu me faire parvenir le fichier par courriel?

--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Les choses qui n'ont rien en commun ont en commun qu'elles n'ont rien en
commun"
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"daniel" a écrit dans le message de news:

Bonjour et merci,
Je viens de compiler le code, essayer, fermer le fichier, essayer,
l'enregistrer sous un autre nom, mais ça ne fonctionne toujours pas.
Je crains que ce soit du même ordre que mon problème du 08/10.


Pour le 2ème point, je suis preneur, mais je ne sais pas comment
simplifier, j'avance très doucement en VBA.
2. Il est possible de simplifier ta macro car tu utilises beaucoup de
Activate et de Select, alors qu'à mon avis tu pourrais travailler avec un
objet Range ou Cell.

Ok?






Avatar
daniel
Malheureusement, c'est un fichier que j'ai créé pour le travail et ne peut
donc pas le diffuser, confidentialité oblige.
Mais en mettant les bouts de code, cela peut peut-être marcher ???
Merci quand même ds tous les cas.
Avatar
Pierre Fauconnier
Si, mais je souhaiterais que tu rendes le code, car je n'ai pas compris
(samedi oblige...) où se plaçait le "on error goto"...

De plus, sans la feuille attachée avec des données, c'est moins évident,
mais je vais essayer.

J'attends le copié-collé du code.

Pierre

"daniel" a écrit dans le message de news:
%23G5%
Malheureusement, c'est un fichier que j'ai créé pour le travail et ne peut
donc pas le diffuser, confidentialité oblige.
Mais en mettant les bouts de code, cela peut peut-être marcher ???
Merci quand même ds tous les cas.



Avatar
Youky
si j'ai compris le sens de ta macro,
supprimer les lignes qui contiennent la variable NumAutoOld
Youky

NumAutoOld = 69 'pour essai
Do
On Error Resume Next
Rows(Cells.Find(what:=NumAutoOld).Row).Delete
If Err > 0 Then Exit Do
Loop
Avatar
daniel
Voici le code pratiquement en entier, j'ai enlevé des trucs qui ne sont pas
importants dans le déroulement.
J'ai signalé 2 erreurs sur des on error par des ==== En espérant que cela suffira.
Merci par avance.
Daniel


Sub SauvPourValidation()
' SauvPourValidation Macro

Dim FichierUtil As String
Dim nomclient As String
Dim NumAutoDébut As String
Dim NumAutoFin As String
Dim NumAutoOld As String
Dim VFichAttente As String
Dim CheminCenr As String
Dim CheminCatt As String
Dim CheminN As String
Dim FhichNValid As String
Dim PASS As string

'**************************************************************
' mise en mémoire nom du délégataire et l'ancien n° fiche

Application.Goto Reference:="DelegSigNom"
DelegSigNom = ActiveCell.Value

Application.Goto Reference:="NumCalculOld"
NumAutoOld = ActiveCell.Value

Application.Goto Reference:="FichAttente"
VFichAttente = ActiveCell.Value

'**************************************************************
' Message pour confirmer l'enregistrement
AccordEngtPropoPertes = MsgBox("Le signataire est " & DelegSigNom & " ?"
& _
Chr(10) & "Souhaitez-vous sauvegarder ces données ?", _
vbYesNo + vbQuestion, _
"Confirmation Mise à Jour Historique.")
If AccordEngtPropoPertes = vbYes Then
'**************************************************************
FichierUtil = ActiveWorkbook.Name

Application.Goto Reference:="nomclient"
nomclient = ActiveCell.Value

If ActiveCell.Value <> "Calcul Automatique" Then

Application.ScreenUpdating = False
Workbooks.Open Filename:= _
CheminN
Windows(FhichNValid).Activate

Do Until ActiveWorkbook.ReadOnly = False
ActiveWorkbook.Close
Workbooks.Open Filename:= _
CheminN

c = c + 1 -----> salut à Pierre
If c = 10 Then
MsgBox " Fichier ouvert par une autre personne, " & _
Chr(10) & "réessayez plus tard, désolé !"
ActiveWorkbook.Close
Exit Sub
End If
Loop
Application.ScreenUpdating = True
'**************************************************************
Windows(FichierUtil).Activate
If NumAutoOld <> "" Then
Application.Goto Reference:="NumCalculSuiv"
Else
Application.Goto Reference:="NumCalculAuto"
Calculate
End If
NumEnregis = ActiveCell.Value
Range("f1").Select
ActiveSheet.Unprotect
Range("f1") = NumEnregis

ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
'**************************************************************
Windows(FichierUtil).Activate
Application.Goto Reference:="ExtracPertePourValid"
Selection.Copy

Windows(FhichNValid).Activate
Application.Goto Reference:="Numfiche"
Range("a65536").Select

Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:úlse
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=
_
False, Transpose:úlse
Application.CutCopyMode = False
'**************************************************************
'Ouvre l'onglet Formulaires
ActiveSheet.Next.Select

Windows(FichierUtil).Activate

Application.Goto Reference:="NbExtractOLYMPIA"
NbExtOLIMPIA = ActiveCell.Value
If ActiveCell.Value > 0 Then

If NbExtOLIMPIA = 1 Then
Application.Goto Reference:="ExtracOLYMPIAPourValid1"
End If
If NbExtOLIMPIA = 2 Then
Application.Goto Reference:="ExtracOLYMPIAPourValid2"
End If
If NbExtOLIMPIA = 3 Then
Application.Goto Reference:="ExtracOLYMPIAPourValid3"
End If
If NbExtOLIMPIA = 4 Then
Application.Goto Reference:="ExtracOLYMPIAPourValid4"
End If
Selection.Copy

'**************************************************************
Windows(FhichNValid).Activate
Range("a65536").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:úlse
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=
_
False, Transpose:úlse
End If
'**************************************************************
Application.CutCopyMode = False
Windows(FhichNValid).Activate
'**************************************************************
Application.Goto Reference:="NumFiche"
Selection.Copy
Range("b1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:úlse
'**************************************************************
If NumAutoOld <> "" Then
Cells.Find(What:=NumAutoOld, After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse).Activate
Cells.FindPrevious(After:¬tiveCell).Activate
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
Range("B5").Select

ActiveSheet.Next.Select
Range("B5").Select
===========ICI ça bloque et le message s'arrête sur le cells.find, que je
voudrais passer s'il ne trouve pas ou plus le numéro=========== On Error GoTo PASS
Do Until Cells.Find(What:=NumAutoOld, After:¬tiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse).Activate = False 'True
Cells.FindPrevious(After:¬tiveCell).Activate
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
Range("B5").Select

Loop
PASS:
On Error GoTo 0
End If
'**************************************************************
Application.Goto Reference:="NumFiche"
ActiveWorkbook.Save
ActiveWorkbook.Close
Windows(FichierUtil).Activate
Application.Goto Reference:="Agence"
'**************************************************************
ChDrive "c:" 'si le disque C n'est pas le disque par défaut

======ICI aussi ça bloque, alors qu'avant, je n'avais pas de soucis au
MkDir============ ' On Error GoTo 0
' On Error Resume Next
' MkDir "C:DossierEnregistrees"
' On Error GoTo 0
ChDrive "c:" 'si le disque C n'est pas le disque par défaut
ChDir CheminCenr
If NumActuel <> "" Then
ActiveWorkbook.Save
Else
ActiveWorkbook.SaveAs Filename:=(nomclient)
End If

If VFichAttente <> "non" Then
Kill VFichAttente
End If

'**************************************************************
' Imprime la fiche
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
'**************************************************************
MsgBox "La fiche a été enregistrée dans le répertoire
c:DossierEnregistrees"
'**************************************************************
Else: MsgBox "La fiche doit être complétée !"
End If
Else: Application.Goto Reference:="nomclient"
MsgBox "opération abandonnée !"
End If

Exit Sub
End Sub
Avatar
daniel
Bonjour et merci,
J'ai mis le bout de code, mais même principe ça bloque sur Rows(Cell......,
comme avec le code initial. ?????
Avatar
Patrick Penet
Erreur 91 indique que l'objet à qui tu veux parler
n'est pas défini : En clair, ça veut dire que si tu écris

Range("B5").Select

et que l'objet "actif" n'a pas de propriété
Range, alors ça plante.

Un conseil : revoir l'utilisation de With ... End With
Si ton code est correct, il manque un point "."
devant chaque Range("B5").Select.

PP


"daniel" a écrit dans le message de news:
Bonjour et merci,
J'ai mis le bout de code, mais même principe ça bloque sur Rows(Cell......, comme avec le code initial. ?????



Avatar
daniel
Bonjour,
le > Range("B5").Select n'a que très peu d'importance ds ma macro, je l'ai
enlevé, ce n'est pas ça qui bloque.
je n'utilise pas, à tort, with et end with, mais de toute façon, je pense
que l'erreur devrait être "passée" avec le on error goto pass.
Merci pour les conseils, je vais me pencher sur with dès que possible.
Bon week-end