Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/12/2011, 07h16   #1
Membre actif
 
Homme
Chargé d'affaire
Inscription : novembre 2008
Messages : 152
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2008
Messages : 152
Points : 195
Points : 195
Bonjour dans une classeur j'active une feuille, puis je fais :
Code :
Range("A2", "CC1000").Delete
et là j'ai le message suivant :
Citation:
Erreur d'exécution -2147417848(80010108)
La méthode 'Delete' de l'objet 'Range' a échoué
Le problème c'est que sous excel 2007 sa fonctionne correctement.

Alors du coup j'ai pas vraiment d'idée.

Voici le code complet dans lequel se produit l'erreur.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
Public Sub AnalyseEleve_Initialisation()
 
Application.ScreenUpdating = False
'Call initVariables(classeur)
Call initVariables
FeuilleAnalyseEleve.Activate
 
' Mise en place du filtre sur les eleves :
' ==========================================
Dim texte_1 As OLEObject
Dim FiltreEleve As OLEObject
 
If (ObjetExiste("label_1")) Then
    Set texte_1 = FeuilleAnalyseEleve.Shapes("label_1").OLEFormat.Object
    texte_1.Delete
End If
Set texte_1 = FeuilleAnalyseEleve.OLEObjects.Add("Forms.Label.1")
With texte_1
    .Top = 5
    .Left = 5
    .Width = 40
    .Height = 15
    .Name = "label_1"
    .Object.Caption = "Eleve :"
    .Object.BackStyle = 0
    .Object.TextAlign = 3
    .ShapeRange.Fill.Transparency = 1#
End With
 
If (ObjetExiste("FiltreEleve")) Then
    Set FiltreEleve = FeuilleAnalyseEleve.Shapes("FiltreEleve").OLEFormat.Object
    FiltreEleve.Delete
End If
Set FiltreEleve = FeuilleAnalyseEleve.OLEObjects.Add("Forms.ComboBox.1")
With FiltreEleve
    .Top = 5
    .Left = 45
    .Width = 150
    .Height = 15
    .Name = "FiltreEleve"
    .Object.BackStyle = 0
    .Object.TextAlign = 1
    .Object.Font.Size = 8
    .ShapeRange.Fill.Transparency = 1#
End With
 
' Mise en place du filtre sur les trimestres :
' ============================================
Dim texte_3 As OLEObject
Dim filtreTrim As OLEObject
 
If (ObjetExiste("label_3")) Then
    Set texte_3 = FeuilleAnalyseEleve.Shapes("label_3").OLEFormat.Object
    texte_3.Delete
End If
Set texte_3 = FeuilleAnalyseEleve.OLEObjects.Add("Forms.Label.1")
With texte_3
    .Top = 5
    .Left = 220
    .Width = 80
    .Height = 15
    .Name = "label_3"
    .Object.Caption = "Trimestre :"
    .Object.TextAlign = 3
    .Object.BackStyle = 0
    .ShapeRange.Fill.Transparency = 1#
End With
 
If (ObjetExiste("Trimestre")) Then
    Set filtreTrim = FeuilleAnalyseEleve.Shapes("Trimestre").OLEFormat.Object
    filtreTrim.Delete
End If
Set filtreTrim = FeuilleAnalyseEleve.OLEObjects.Add("Forms.ComboBox.1")
 
filtreTrim.Object.AddItem "Tous les trimestres"
filtreTrim.Object.AddItem "Trimestre 1"
filtreTrim.Object.AddItem "Trimestre 2"
filtreTrim.Object.AddItem "Trimestre 3"
With filtreTrim
    .Top = 5
    .Left = 310
    .Width = 100
    .Height = 15
    .Name = "Trimestre"
    .Object.BackStyle = 0
    .Object.TextAlign = 3
    .Object.Font.Size = 8
    .ShapeRange.Fill.Transparency = 1#
End With
filtreTrim.Object.ListIndex = 0
 
' remplissage de la combo box avec la liste des élèves.
' On écrit la liste des éléves sur la première ligne à partir de la deuxième colonne:
' -----------------------------------------------------------------------------------
' On récupère le nombre de ligne pour les elèves:
Dim NbLigEl As Integer
Dim indCol As Integer
Dim compteEl As Integer
Dim NbEleves As Integer
NbLigEl = ListeEleve.Cells(6000, ColNomEleve).End(xlUp).Row
NbEleves = NbLigEl - LigNomEleve
indCol = ColonneEleve
compteEl = LigNomEleve
While (compteEl <= NbLigEl)
    FiltreEleve.Object.AddItem ListeEleve.Cells(compteEl, ColNomEleve)
    compteEl = compteEl + 1
Wend
FiltreEleve.Object.ListIndex = 0
 
Range("A2", "CC1000").Delete
Application.ScreenUpdating = True
End Sub
AF_2.8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 08h09   #2
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Essai de préciser la feuille sur laquelle tu travailles.

Code :
FeuilleAnalyseEleve.range(....)
++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 15h16   #3
Membre actif
 
Homme
Chargé d'affaire
Inscription : novembre 2008
Messages : 152
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2008
Messages : 152
Points : 195
Points : 195
J'ai essayé mais ca ne change rien.
Ce qui me surprend le plus c'est que celà fonctionne sous 2007
AF_2.8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 18h04   #4
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Étonnant en effet, les valeurs (colonne et ligne) sont pourtant en dessous des maxi autorisé par 2003.

Essais en changeant d'écriture...
Code :
Range("A2:CC1000").Delete
Sinon tente le coup avec UsedRange si tu n'as que ton tableau, attention, il faudra aussi utiliser Offset pour décaler d'une ligne vers le bas pour ne pas détruire tes entêtes. Fait un essai sur une copi de ton fichier juste avec UsedRange voi ce que ça donne.

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 19h55   #5
Membre actif
 
Homme
Chargé d'affaire
Inscription : novembre 2008
Messages : 152
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2008
Messages : 152
Points : 195
Points : 195
J'ai changé l'écriture de la sélection mais cela ne change rien, je vais regarder pour le UsedRange, mais je connais pas.
AF_2.8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h17.


 
 
 
 
Partenaires

Hébergement Web