OVH Cloud OVH Cloud

Sheets(3).Select... Plante... J'enrage !

14 réponses
Avatar
LANIMAL
Bonjour,
Pendant 3 heures, j'enrage.

Le classeur bnqCA.xls comporte 3 feuilles :
"Mi" - "Report" - "Ma" (Ma a pour index : 3)

Il est ouvert, sur la feuil "Mi"
La procédure ci-dessous :
Sub Test1()
Sheets(3).Select
End Sub
me renvoie l'alerte :
Erreur d'exécution '40036':
Erreur définie par l'application ou par l'objet
(Cette macro ne m'a jamais posé de Pb dans d'autres classeurs)
En désespoir de cause, j'ai testé les instructions ci-dessous
qui renvoient toutes la même alerte.

Sheets(3).Activate
Sheets("Ma").Select
Sheets("Ma").Activate
Worksheets(3).Select
Worksheets(3).Activate
Worksheets("Ma").Select
Worksheets("Ma").Activate

Je désespère, un "maître" pourrait-il m'aider.
Ô combien merci à celui-ci !

4 réponses

1 2
Avatar
LANIMAL
OUF ! - Bingo !
D'abord un grand merci - encore - à ceux qui m'ont donné de leur temps.
J'ai enfin trouvé la cause du Pb.
Merci pour ta dernière proposition, michdenis, qui m'apprend des choses
c'est toujours instructif de voir des solutions différentes.
Me décidant à "casser" mon projet, par étapes, avant de le reconstruire,
je me suis aperçu qu'une feuille-graph avait perdu des références, suite
à la suppression d'une colonne dans une autre feuille.
En supprimant cette feuille, le pb a disparu.
Je ne comprends pas le lien, car aucun objet de cette feuille, ni de la
colonne supprimée n'était en lien avec la procédure en cause.
Peut-être, tout simplement Excel et VBA étaient mal à l'aise ? !? !?
Bien amicalement ... maintenant l'ANIMAL se remet au bouleau !

michdenis a écrit :
J'ai réécrit ton code :

Avec déclaration des variables
En prenant soin d'indiquer dans quel objet se
retrouve les objets avec lesquels je veux travailler

C'est un peu plus long à écrire mais ce type de code
est plus lisible, plus rapide à l'exécution...

Dans le code, tu dois remplacer "Feuil1" pour le
nom de l'objet feuille où sont tes données
With Feuil1

'-----------------------------------------
Sub téléchrgt_bnq_CA()
'Déclaration des variables
Dim Téléchargement As String
Dim Chemin As String
Dim Fichier As String
Dim PremLign As Long
Dim MaVar As String
Dim Wk As Workbook

'mémo du nom du classeur téléchargé (pour y revenir + tard)
Téléchargement = ActiveWorkbook.Name
Chemin = "D:DocumentsMB"
Fichier = "bnqCA.xls"

'Élément à trouver
MaVar = "CCHQ nnnn"

On Error Resume Next
'Vérifier si le fichier existe
If Dir(Fichier) <> "" Then
'Vérifier si le fichier est ouvert
Set Wk = Workbooks(Fichier)
If Wk Is Nothing Then
'Le fichier n'est pas ouvert
'Ouvrir le fichier
Set Wk = Workbooks.Open(Filename:=Chemin & _
Fichier, UpdateLinks:=0)
End If

'S'assurer que ce classeur est "Actif
ThisWorkbook.Activate
With Feuil1 'La propriété Name de l'objet Feuille en VBA
Err = 0
PremLign = Application.Match(MaVar, _
.Columns("A"), 0) + 5
'Si la fonction Match() a trouvé
If Err = 0 Then
'nnnn=n° du cpte
'sélection 1ère écriture téléchargée
With .Range("A" & PremLign & ":A" & _
.Range("A65536").End(xlUp).Row)
'Copie dans le presse-papier de la sélection
.EntireRow.Copy
End With
Else
MsgBox "Pas trouver : """ & MaVar & ""
Exit Sub
End If
End With
With Wk
With .Sheets("Ma")
.Rows(3).Insert
'le reste de ton code

End With
End With
Else
MsgBox "Le fichier """ & Chemin & Fichier & """ est introuvable"
Exit Sub
End If
'Et si tu veux fermer ton classeur avec sauvegarde
'à la fin de l'opération
'Wk.Close True
End Sub
'-----------------------------------------



"LANIMAL" a écrit dans le message de groupe de discussion :
eLpEV$
Alors, pour être plus précis :
- je pars de la page Excel téléchargée depuis le site de la banque.
- je clique sur le bouton perso [CA] (placé dans la barre d'outils
d'Excel) qui lance l’exécution de la sub ci-dessous.
-----------------------------------------------------------
Sub téléchrgt_bnq_CA()
Téléchargement = ActiveWorkbook.Name
'mémo du nom du classeur téléchargé (pour y revenir + tard)

PremLign = Application.Match("CCHQ nnnn", Columns("A"), 0) + 5
'nnnn=n° du cpte

Range("A" & PremLign).Select 'sélection 1ère écriture téléchargée
Range(Selection, Selection.End(xlDown)).EntireRow.Copy
'sélection de toutes les lignes téléchargées

On Error Resume Next
Workbooks("bnqCA.xls").Activate
If Err <> 0 Then Workbooks.Open Filename:="D:Documents
MBbnqCA.xls", UpdateLinks:=0

Sheets("Ma").Select
Rows(3).Insert ‘Insertion en tête des écritures précédentes
…..
End Sub
-------------------------------------------------------------------------
Et c’est donc l’avant- dernière instruction (Sheets("Ma").Select) qui plante
avec l’alerte : Erreur d'exécution '40036':
Erreur définie par l'application ou par l'objet

Je dois préciser que des procédures tout à fait analogues pour d’autres
projets ne m’ont jamais posé de pb.
Bien amicalement


michdenis a écrit :
Comme tu as fait référence dans un de tes messages précédents
de ton classeur perso,

Où ta procédure est-elle écrite ?
Si elle est dans ton perso, et que tu n'as pas ajouté la référence
au classeur actif à l'écran, cela ne peut pas fonctionner !

With Workbooks("NomDuClasseurActif.xls")
.Activate
.Sheets(3).Select
End With

Est-ce toujours pareil ?



"LANIMAL" a écrit dans le message de groupe de discussion :
#
Bonjour
Ben oui, elle est toujours là :-((
à +... peut-être ?

michdenis a écrit :
Bonjour,

Essaie ce petit test :

Copie l'intégralité du contenu de ton module
(de la première à la dernière ligne) dans
l'application NotePad pour le conserver.

Lorsque tu as sauvegardé ton code, supprime
la totalité de ton code du module, enregistre
ton classeur et saisis à nouveau ta procédure
qui est problématique. As-tu toujours ton
erreur ?



"LANIMAL" a écrit dans le message de groupe de discussion :
#
Bonjour,
Pendant 3 heures, j'enrage.

Le classeur bnqCA.xls comporte 3 feuilles :
"Mi" - "Report" - "Ma" (Ma a pour index : 3)

Il est ouvert, sur la feuil "Mi"
La procédure ci-dessous :
Sub Test1()
Sheets(3).Select
End Sub
me renvoie l'alerte :
Erreur d'exécution '40036':
Erreur définie par l'application ou par l'objet
(Cette macro ne m'a jamais posé de Pb dans d'autres classeurs)
En désespoir de cause, j'ai testé les instructions ci-dessous
qui renvoient toutes la même alerte.

Sheets(3).Activate
Sheets("Ma").Select
Sheets("Ma").Activate
Worksheets(3).Select
Worksheets(3).Activate
Worksheets("Ma").Select
Worksheets("Ma").Activate

Je désespère, un "maître" pourrait-il m'aider.
Ô combien merci à celui-ci !







Avatar
diddy01
Michdenis,
Quelle patience et SAVOIR !!
Amicalement.
diddy01
"michdenis" a écrit dans le message de
news:
J'ai réécrit ton code :

Avec déclaration des variables
En prenant soin d'indiquer dans quel objet se
retrouve les objets avec lesquels je veux travailler

C'est un peu plus long à écrire mais ce type de code
est plus lisible, plus rapide à l'exécution...

Dans le code, tu dois remplacer "Feuil1" pour le
nom de l'objet feuille où sont tes données
With Feuil1

'-----------------------------------------
Sub téléchrgt_bnq_CA()
'Déclaration des variables
Dim Téléchargement As String
Dim Chemin As String
Dim Fichier As String
Dim PremLign As Long
Dim MaVar As String
Dim Wk As Workbook

'mémo du nom du classeur téléchargé (pour y revenir + tard)
Téléchargement = ActiveWorkbook.Name
Chemin = "D:DocumentsMB"
Fichier = "bnqCA.xls"

'Élément à trouver
MaVar = "CCHQ nnnn"

On Error Resume Next
'Vérifier si le fichier existe
If Dir(Fichier) <> "" Then
'Vérifier si le fichier est ouvert
Set Wk = Workbooks(Fichier)
If Wk Is Nothing Then
'Le fichier n'est pas ouvert
'Ouvrir le fichier
Set Wk = Workbooks.Open(Filename:=Chemin & _
Fichier, UpdateLinks:=0)
End If

'S'assurer que ce classeur est "Actif
ThisWorkbook.Activate
With Feuil1 'La propriété Name de l'objet Feuille en VBA
Err = 0
PremLign = Application.Match(MaVar, _
.Columns("A"), 0) + 5
'Si la fonction Match() a trouvé
If Err = 0 Then
'nnnn=n° du cpte
'sélection 1ère écriture téléchargée
With .Range("A" & PremLign & ":A" & _
.Range("A65536").End(xlUp).Row)
'Copie dans le presse-papier de la sélection
.EntireRow.Copy
End With
Else
MsgBox "Pas trouver : """ & MaVar & ""
Exit Sub
End If
End With
With Wk
With .Sheets("Ma")
.Rows(3).Insert
'le reste de ton code

End With
End With
Else
MsgBox "Le fichier """ & Chemin & Fichier & """ est introuvable"
Exit Sub
End If
'Et si tu veux fermer ton classeur avec sauvegarde
'à la fin de l'opération
'Wk.Close True
End Sub
'-----------------------------------------



"LANIMAL" a écrit dans le message de groupe de discussion
:
eLpEV$
Alors, pour être plus précis :
- je pars de la page Excel téléchargée depuis le site de la banque.
- je clique sur le bouton perso [CA] (placé dans la barre d'outils
d'Excel) qui lance l’exécution de la sub ci-dessous.
-----------------------------------------------------------
Sub téléchrgt_bnq_CA()
Téléchargement = ActiveWorkbook.Name
'mémo du nom du classeur téléchargé (pour y revenir + tard)

PremLign = Application.Match("CCHQ nnnn", Columns("A"), 0) + 5
'nnnn=n° du cpte

Range("A" & PremLign).Select 'sélection 1ère écriture téléchargée
Range(Selection, Selection.End(xlDown)).EntireRow.Copy
'sélection de toutes les lignes téléchargées

On Error Resume Next
Workbooks("bnqCA.xls").Activate
If Err <> 0 Then Workbooks.Open Filename:="D:Documents
MBbnqCA.xls", UpdateLinks:=0

Sheets("Ma").Select
Rows(3).Insert ‘Insertion en tête des écritures précédentes
…..
End Sub
-------------------------------------------------------------------------
Et c’est donc l’avant- dernière instruction (Sheets("Ma").Select) qui
plante
avec l’alerte : Erreur d'exécution '40036':
Erreur définie par l'application ou par l'objet

Je dois préciser que des procédures tout à fait analogues pour d’autres
projets ne m’ont jamais posé de pb.
Bien amicalement


michdenis a écrit :
Comme tu as fait référence dans un de tes messages précédents
de ton classeur perso,

Où ta procédure est-elle écrite ?
Si elle est dans ton perso, et que tu n'as pas ajouté la référence
au classeur actif à l'écran, cela ne peut pas fonctionner !

With Workbooks("NomDuClasseurActif.xls")
.Activate
.Sheets(3).Select
End With

Est-ce toujours pareil ?



"LANIMAL" a écrit dans le message de groupe de
discussion :
#
Bonjour
Ben oui, elle est toujours là :-((
à +... peut-être ?

michdenis a écrit :
Bonjour,

Essaie ce petit test :

Copie l'intégralité du contenu de ton module
(de la première à la dernière ligne) dans
l'application NotePad pour le conserver.

Lorsque tu as sauvegardé ton code, supprime
la totalité de ton code du module, enregistre
ton classeur et saisis à nouveau ta procédure
qui est problématique. As-tu toujours ton
erreur ?



"LANIMAL" a écrit dans le message de groupe de
discussion :
#
Bonjour,
Pendant 3 heures, j'enrage.

Le classeur bnqCA.xls comporte 3 feuilles :
"Mi" - "Report" - "Ma" (Ma a pour index : 3)

Il est ouvert, sur la feuil "Mi"
La procédure ci-dessous :
Sub Test1()
Sheets(3).Select
End Sub
me renvoie l'alerte :
Erreur d'exécution '40036':
Erreur définie par l'application ou par l'objet
(Cette macro ne m'a jamais posé de Pb dans d'autres classeurs)
En désespoir de cause, j'ai testé les instructions ci-dessous
qui renvoient toutes la même alerte.

Sheets(3).Activate
Sheets("Ma").Select
Sheets("Ma").Activate
Worksheets(3).Select
Worksheets(3).Activate
Worksheets("Ma").Select
Worksheets("Ma").Activate

Je désespère, un "maître" pourrait-il m'aider.
Ô combien merci à celui-ci !







Avatar
LSteph
Bonjour,


Sheets désigne un onglet,
attention! cela peut-être une feuille de calcul, graphique ou autre..
Pour une feuille utiliser plutôt son nom de code codename exemple

Feuil3.Activate

Cordialement.

--
lSteph


On 4 oct, 11:08, LANIMAL wrote:
Bonjour,
Pendant 3 heures, j'enrage.

Le classeur bnqCA.xls comporte 3 feuilles :
"Mi"  -  "Report"   -  "Ma" (Ma a pour index : 3)

Il est ouvert, sur la feuil  "Mi"
La procédure ci-dessous :
        Sub Test1()
        Sheets(3).Select
        End Sub
me renvoie l'alerte :
                Erreur d'exécution '40036':
                Erreur définie par l'application ou par l'objet
        (Cette macro ne m'a jamais posé de Pb dans d'autres cla sseurs)
En désespoir de cause, j'ai testé les instructions ci-dessous
qui renvoient toutes la même alerte.

Sheets(3).Activate
Sheets("Ma").Select
Sheets("Ma").Activate
Worksheets(3).Select
Worksheets(3).Activate
Worksheets("Ma").Select
Worksheets("Ma").Activate

Je désespère, un "maître" pourrait-il m'aider.
Ô combien merci à celui-ci !


Avatar
Jacquouille
Pfffft
Et il n'a pas encore tout dit. -)

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"diddy01" <diddy01€hotmail.com> a écrit dans le message de news:

Michdenis,
Quelle patience et SAVOIR !!
Amicalement.
diddy01
"michdenis" a écrit dans le message de
news:
J'ai réécrit ton code :

Avec déclaration des variables
En prenant soin d'indiquer dans quel objet se
retrouve les objets avec lesquels je veux travailler

C'est un peu plus long à écrire mais ce type de code
est plus lisible, plus rapide à l'exécution...

Dans le code, tu dois remplacer "Feuil1" pour le
nom de l'objet feuille où sont tes données
With Feuil1

'-----------------------------------------
Sub téléchrgt_bnq_CA()
'Déclaration des variables
Dim Téléchargement As String
Dim Chemin As String
Dim Fichier As String
Dim PremLign As Long
Dim MaVar As String
Dim Wk As Workbook

'mémo du nom du classeur téléchargé (pour y revenir + tard)
Téléchargement = ActiveWorkbook.Name
Chemin = "D:DocumentsMB"
Fichier = "bnqCA.xls"

'Élément à trouver
MaVar = "CCHQ nnnn"

On Error Resume Next
'Vérifier si le fichier existe
If Dir(Fichier) <> "" Then
'Vérifier si le fichier est ouvert
Set Wk = Workbooks(Fichier)
If Wk Is Nothing Then
'Le fichier n'est pas ouvert
'Ouvrir le fichier
Set Wk = Workbooks.Open(Filename:=Chemin & _
Fichier, UpdateLinks:=0)
End If

'S'assurer que ce classeur est "Actif
ThisWorkbook.Activate
With Feuil1 'La propriété Name de l'objet Feuille en VBA
Err = 0
PremLign = Application.Match(MaVar, _
.Columns("A"), 0) + 5
'Si la fonction Match() a trouvé
If Err = 0 Then
'nnnn=n° du cpte
'sélection 1ère écriture téléchargée
With .Range("A" & PremLign & ":A" & _
.Range("A65536").End(xlUp).Row)
'Copie dans le presse-papier de la sélection
.EntireRow.Copy
End With
Else
MsgBox "Pas trouver : """ & MaVar & ""
Exit Sub
End If
End With
With Wk
With .Sheets("Ma")
.Rows(3).Insert
'le reste de ton code

End With
End With
Else
MsgBox "Le fichier """ & Chemin & Fichier & """ est introuvable"
Exit Sub
End If
'Et si tu veux fermer ton classeur avec sauvegarde
'à la fin de l'opération
'Wk.Close True
End Sub
'-----------------------------------------



"LANIMAL" a écrit dans le message de groupe de
discussion :
eLpEV$
Alors, pour être plus précis :
- je pars de la page Excel téléchargée depuis le site de la banque.
- je clique sur le bouton perso [CA] (placé dans la barre d'outils
d'Excel) qui lance l’exécution de la sub ci-dessous.
-----------------------------------------------------------
Sub téléchrgt_bnq_CA()
Téléchargement = ActiveWorkbook.Name
'mémo du nom du classeur téléchargé (pour y revenir + tard)

PremLign = Application.Match("CCHQ nnnn", Columns("A"), 0) + 5
'nnnn=n° du cpte

Range("A" & PremLign).Select 'sélection 1ère écriture téléchargée
Range(Selection, Selection.End(xlDown)).EntireRow.Copy
'sélection de toutes les lignes téléchargées

On Error Resume Next
Workbooks("bnqCA.xls").Activate
If Err <> 0 Then Workbooks.Open Filename:="D:Documents
MBbnqCA.xls", UpdateLinks:=0

Sheets("Ma").Select
Rows(3).Insert ‘Insertion en tête des écritures précédentes
…..
End Sub
-------------------------------------------------------------------------
Et c’est donc l’avant- dernière instruction (Sheets("Ma").Select) qui
plante
avec l’alerte : Erreur d'exécution '40036':
Erreur définie par l'application ou par l'objet

Je dois préciser que des procédures tout à fait analogues pour d’autres
projets ne m’ont jamais posé de pb.
Bien amicalement


michdenis a écrit :
Comme tu as fait référence dans un de tes messages précédents
de ton classeur perso,

Où ta procédure est-elle écrite ?
Si elle est dans ton perso, et que tu n'as pas ajouté la référence
au classeur actif à l'écran, cela ne peut pas fonctionner !

With Workbooks("NomDuClasseurActif.xls")
.Activate
.Sheets(3).Select
End With

Est-ce toujours pareil ?



"LANIMAL" a écrit dans le message de groupe de
discussion :
#
Bonjour
Ben oui, elle est toujours là :-((
à +... peut-être ?

michdenis a écrit :
Bonjour,

Essaie ce petit test :

Copie l'intégralité du contenu de ton module
(de la première à la dernière ligne) dans
l'application NotePad pour le conserver.

Lorsque tu as sauvegardé ton code, supprime
la totalité de ton code du module, enregistre
ton classeur et saisis à nouveau ta procédure
qui est problématique. As-tu toujours ton
erreur ?



"LANIMAL" a écrit dans le message de groupe de
discussion :
#
Bonjour,
Pendant 3 heures, j'enrage.

Le classeur bnqCA.xls comporte 3 feuilles :
"Mi" - "Report" - "Ma" (Ma a pour index : 3)

Il est ouvert, sur la feuil "Mi"
La procédure ci-dessous :
Sub Test1()
Sheets(3).Select
End Sub
me renvoie l'alerte :
Erreur d'exécution '40036':
Erreur définie par l'application ou par l'objet
(Cette macro ne m'a jamais posé de Pb dans d'autres classeurs)
En désespoir de cause, j'ai testé les instructions ci-dessous
qui renvoient toutes la même alerte.

Sheets(3).Activate
Sheets("Ma").Select
Sheets("Ma").Activate
Worksheets(3).Select
Worksheets(3).Activate
Worksheets("Ma").Select
Worksheets("Ma").Activate

Je désespère, un "maître" pourrait-il m'aider.
Ô combien merci à celui-ci !










1 2