OVH Cloud OVH Cloud

Erreur "La méthode 'Select' de l'objet '_Worksheet' a échoué"

11 réponses
Avatar
Romuald
Bonjour,

j'utilise une métode qui sélectionne une feuille de mon classeur avec le
code wksSheet.Select

De temps en temps j'ai l'erreur suivante :
ERROR N° 1004 - La méthode 'Select' de l'objet '_Worksheet' a échoué

L'erreur est la même lorsque je précède cette commande par
wksSheet.Parent.Activate ou wksSheet.Activate

Qu'est-ce qui peut expliquer cette erreur sachant qu'elle n'est pas
systématique???

Mon classeur a la propriété isAddIn = true (il est appelé par un autre
classeur).

merci

10 réponses

1 2
Avatar
Pounet95
Bonjour,
Quand cette instruction est éxecutée, le classeur actif est-il bien celui
qui contient la feuille
wksSheet ? ou encore, cette feuille est-elle visible ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Romuald" a écrit dans le message de
news:
Bonjour,

j'utilise une métode qui sélectionne une feuille de mon classeur avec le
code wksSheet.Select

De temps en temps j'ai l'erreur suivante :
ERROR N° 1004 - La méthode 'Select' de l'objet '_Worksheet' a échoué

L'erreur est la même lorsque je précède cette commande par
wksSheet.Parent.Activate ou wksSheet.Activate

Qu'est-ce qui peut expliquer cette erreur sachant qu'elle n'est pas
systématique???

Mon classeur a la propriété isAddIn = true (il est appelé par un autre
classeur).

merci


Avatar
Romuald
Oui le classeur actif est bien celui qui contient la feuille (au cas où j'ai
ajouté un wksSheet.parent.activate avant) et la feuille est visible.


Bonjour,
Quand cette instruction est éxecutée, le classeur actif est-il bien celui
qui contient la feuille
wksSheet ? ou encore, cette feuille est-elle visible ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Romuald" a écrit dans le message de
news:
Bonjour,

j'utilise une métode qui sélectionne une feuille de mon classeur avec le
code wksSheet.Select

De temps en temps j'ai l'erreur suivante :
ERROR N° 1004 - La méthode 'Select' de l'objet '_Worksheet' a échoué

L'erreur est la même lorsque je précède cette commande par
wksSheet.Parent.Activate ou wksSheet.Activate

Qu'est-ce qui peut expliquer cette erreur sachant qu'elle n'est pas
systématique???

Mon classeur a la propriété isAddIn = true (il est appelé par un autre
classeur).

merci






Avatar
Pounet95
Re,
Peut-on voir le code de la procédure en entier ( si pas 10 pages ! ) ?
Ou bien préciser davantage
A+

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Romuald" a écrit dans le message de
news:
Oui le classeur actif est bien celui qui contient la feuille (au cas où
j'ai
ajouté un wksSheet.parent.activate avant) et la feuille est visible.


Bonjour,
Quand cette instruction est éxecutée, le classeur actif est-il bien celui
qui contient la feuille
wksSheet ? ou encore, cette feuille est-elle visible ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Romuald" a écrit dans le message de
news:
Bonjour,

j'utilise une métode qui sélectionne une feuille de mon classeur avec
le
code wksSheet.Select

De temps en temps j'ai l'erreur suivante :
ERROR N° 1004 - La méthode 'Select' de l'objet '_Worksheet' a échoué

L'erreur est la même lorsque je précède cette commande par
wksSheet.Parent.Activate ou wksSheet.Activate

Qu'est-ce qui peut expliquer cette erreur sachant qu'elle n'est pas
systématique???

Mon classeur a la propriété isAddIn = true (il est appelé par un autre
classeur).

merci








Avatar
Romuald
Ci-dessous le code :


Public Function GetLastRow(Optional lngColNumber1 As Long = 1, _
Optional lngColNumber2 As Long = 50, _
Optional lngRowMax As Long = 65536, _
Optional wksWorksheet As Worksheet = Nothing) As Long

Dim I As Long
Dim wksCurrentWorkSheet As Worksheet

' Récupération des paramètres globaux actuel
Set wksCurrentWorkSheet = ActiveSheet
' Initialisations
GetLastRow = 0
If wksWorksheet Is Nothing Then
Set wksWorksheet = wksCurrentWorkSheet
End If
With wksWorksheet
.Select
For I = lngColNumber1 To lngColNumber2
If .Cells(lngRowMax, I).Value <> "" Then GetLastRow =
ActiveCell.Row
.Cells(lngRowMax, I).Select
Selection.End(xlUp).Select
If ActiveCell.Row > GetLastRow And _
ActiveCell.Value <> "" Then GetLastRow = ActiveCell.Row
Next
End With
wksCurrentWorkSheet.Select

End Function


La ligne qui plante est " .Select"



Re,
Peut-on voir le code de la procédure en entier ( si pas 10 pages ! ) ?
Ou bien préciser davantage
A+

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Romuald" a écrit dans le message de
news:
Oui le classeur actif est bien celui qui contient la feuille (au cas où
j'ai
ajouté un wksSheet.parent.activate avant) et la feuille est visible.


Bonjour,
Quand cette instruction est éxecutée, le classeur actif est-il bien celui
qui contient la feuille
wksSheet ? ou encore, cette feuille est-elle visible ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Romuald" a écrit dans le message de
news:
Bonjour,

j'utilise une métode qui sélectionne une feuille de mon classeur avec
le
code wksSheet.Select

De temps en temps j'ai l'erreur suivante :
ERROR N° 1004 - La méthode 'Select' de l'objet '_Worksheet' a échoué

L'erreur est la même lorsque je précède cette commande par
wksSheet.Parent.Activate ou wksSheet.Activate

Qu'est-ce qui peut expliquer cette erreur sachant qu'elle n'est pas
systématique???

Mon classeur a la propriété isAddIn = true (il est appelé par un autre
classeur).

merci












Avatar
Pounet95
Re,
Je n'ai pas l'erreur signalée .... mais une autre
<< Microsoft Excel ne parvient pas à calculer cette formule. Un classeur
ouvert contient une référence circulaire, mais il est impossible d'afficher
les références erronées. Essayer de modifier la dernière formule tapée ou de
la supprimer avec la commande Annuler (menu Edition) >>

Que je valide Annuler ou OK, même valeur dans cellule égale 0 ????

Je déplace le problème ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Romuald" a écrit dans le message de
news:
Ci-dessous le code :


Public Function GetLastRow(Optional lngColNumber1 As Long = 1, _
Optional lngColNumber2 As Long = 50, _
Optional lngRowMax As Long = 65536, _
Optional wksWorksheet As Worksheet = Nothing) As Long

Dim I As Long
Dim wksCurrentWorkSheet As Worksheet

' Récupération des paramètres globaux actuel
Set wksCurrentWorkSheet = ActiveSheet
' Initialisations
GetLastRow = 0
If wksWorksheet Is Nothing Then
Set wksWorksheet = wksCurrentWorkSheet
End If
With wksWorksheet
.Select
For I = lngColNumber1 To lngColNumber2
If .Cells(lngRowMax, I).Value <> "" Then GetLastRow > ActiveCell.Row
.Cells(lngRowMax, I).Select
Selection.End(xlUp).Select
If ActiveCell.Row > GetLastRow And _
ActiveCell.Value <> "" Then GetLastRow = ActiveCell.Row
Next
End With
wksCurrentWorkSheet.Select

End Function


La ligne qui plante est " .Select"



Re,
Peut-on voir le code de la procédure en entier ( si pas 10 pages ! ) ?
Ou bien préciser davantage
A+

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Romuald" a écrit dans le message de
news:
Oui le classeur actif est bien celui qui contient la feuille (au cas où
j'ai
ajouté un wksSheet.parent.activate avant) et la feuille est visible.


Bonjour,
Quand cette instruction est éxecutée, le classeur actif est-il bien
celui
qui contient la feuille
wksSheet ? ou encore, cette feuille est-elle visible ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Romuald" a écrit dans le message
de
news:
Bonjour,

j'utilise une métode qui sélectionne une feuille de mon classeur
avec
le
code wksSheet.Select

De temps en temps j'ai l'erreur suivante :
ERROR N° 1004 - La méthode 'Select' de l'objet '_Worksheet' a échoué

L'erreur est la même lorsque je précède cette commande par
wksSheet.Parent.Activate ou wksSheet.Activate

Qu'est-ce qui peut expliquer cette erreur sachant qu'elle n'est pas
systématique???

Mon classeur a la propriété isAddIn = true (il est appelé par un
autre
classeur).

merci














Avatar
papou
Bonjour
S'il s'agit de trouver le numéro de la dernière ligne d'une feuille, il y a
beaucoup plus simple :
Function TrouveLaDerniereLigne(NomFeuille As String) As Long
TrouveLaDerniereLigne = Range(Worksheets(NomFeuille).UsedRange.Address) _
.Offset(Worksheets(NomFeuille).UsedRange.Rows.Count, 0).Row - 1
End Function

Sub test()
MsgBox TrouveLaDerniereLigne("Feuil1")
End Sub

Cordialement
Pascal

"Romuald" a écrit dans le message de
news:
Ci-dessous le code :


Public Function GetLastRow(Optional lngColNumber1 As Long = 1, _
Optional lngColNumber2 As Long = 50, _
Optional lngRowMax As Long = 65536, _
Optional wksWorksheet As Worksheet = Nothing) As Long

Dim I As Long
Dim wksCurrentWorkSheet As Worksheet

' Récupération des paramètres globaux actuel
Set wksCurrentWorkSheet = ActiveSheet
' Initialisations
GetLastRow = 0
If wksWorksheet Is Nothing Then
Set wksWorksheet = wksCurrentWorkSheet
End If
With wksWorksheet
.Select
For I = lngColNumber1 To lngColNumber2
If .Cells(lngRowMax, I).Value <> "" Then GetLastRow > ActiveCell.Row
.Cells(lngRowMax, I).Select
Selection.End(xlUp).Select
If ActiveCell.Row > GetLastRow And _
ActiveCell.Value <> "" Then GetLastRow = ActiveCell.Row
Next
End With
wksCurrentWorkSheet.Select

End Function


La ligne qui plante est " .Select"



Re,
Peut-on voir le code de la procédure en entier ( si pas 10 pages ! ) ?
Ou bien préciser davantage
A+

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Romuald" a écrit dans le message de
news:
Oui le classeur actif est bien celui qui contient la feuille (au cas où
j'ai
ajouté un wksSheet.parent.activate avant) et la feuille est visible.


Bonjour,
Quand cette instruction est éxecutée, le classeur actif est-il bien
celui
qui contient la feuille
wksSheet ? ou encore, cette feuille est-elle visible ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Romuald" a écrit dans le message
de
news:
Bonjour,

j'utilise une métode qui sélectionne une feuille de mon classeur
avec
le
code wksSheet.Select

De temps en temps j'ai l'erreur suivante :
ERROR N° 1004 - La méthode 'Select' de l'objet '_Worksheet' a échoué

L'erreur est la même lorsque je précède cette commande par
wksSheet.Parent.Activate ou wksSheet.Activate

Qu'est-ce qui peut expliquer cette erreur sachant qu'elle n'est pas
systématique???

Mon classeur a la propriété isAddIn = true (il est appelé par un
autre
classeur).

merci














Avatar
AV
Ave papou,

S'il s'agit de trouver le numéro de la dernière ligne d'une feuille, il y a
beaucoup plus simple :
Function TrouveLaDerniereLigne(NomFeuille As String) As Long
TrouveLaDerniereLigne = Range(Worksheets(NomFeuille).UsedRange.Address) _
.Offset(Worksheets(NomFeuille).UsedRange.Rows.Count, 0).Row - 1
End Function


La propriété "UsedRange" peut réserver de très mauvaises surprises !

AV

Avatar
papou
Bonjour AV
Tu as très probablement raison, je pense notamment lorsqu'Excel conserve en
mémoire une plage utilisée à cause de formats inutiliés.
Mais pour autant je ne l'ai jamais constaté pour l'instant et c'est la seule
méthode que j'ai pu identifier pour obtenir le résultat souhaité.
Elle a en tout cas pour avantage de fonctionner lorsqu'un tableau ne possède
pas une structure rigoureuse (pas totalement rempli sur toutes ses lignes et
aussi lorsque les données ne commencent pas sur la 1ère ligne de la
feuille).
Cordialement
Pascal

"AV" a écrit dans le message de news:
%23$YQr0G%
Ave papou,

S'il s'agit de trouver le numéro de la dernière ligne d'une feuille, il y
a
beaucoup plus simple :
Function TrouveLaDerniereLigne(NomFeuille As String) As Long
TrouveLaDerniereLigne = Range(Worksheets(NomFeuille).UsedRange.Address) _
.Offset(Worksheets(NomFeuille).UsedRange.Rows.Count, 0).Row - 1
End Function


La propriété "UsedRange" peut réserver de très mauvaises surprises !

AV





Avatar
AV
Mais pour autant je ne l'ai jamais constaté pour l'instant et c'est la seule
méthode que j'ai pu identifier pour obtenir le résultat souhaité.
Elle a en tout cas pour avantage de fonctionner lorsqu'un tableau ne possède
pas une structure rigoureuse (pas totalement rempli sur toutes ses lignes et
aussi lorsque les données ne commencent pas sur la 1ère ligne de la
feuille).


Un exemple là ** des "méfaits" de UsedRange et une solution alternative par la
méthode "Find"

** http://cjoint.com/?bmnJEOb50d

AV

Avatar
Romuald
UsedRange existe sous Excel 97?



Mais pour autant je ne l'ai jamais constaté pour l'instant et c'est la seule
méthode que j'ai pu identifier pour obtenir le résultat souhaité.
Elle a en tout cas pour avantage de fonctionner lorsqu'un tableau ne possède
pas une structure rigoureuse (pas totalement rempli sur toutes ses lignes et
aussi lorsque les données ne commencent pas sur la 1ère ligne de la
feuille).


Un exemple là ** des "méfaits" de UsedRange et une solution alternative par la
méthode "Find"

** http://cjoint.com/?bmnJEOb50d

AV






1 2