Posez votre question Signaler

VBA erreur 1004

séverine - Dernière réponse le 26 avril 2011 à 17:14
Bonjour forum

j'ai un macro qui a été fait sur excel 5 et qui marché bien.mais maintenat quand je l'execute sur la nouvelle version de excel j'ai l'erreur 1004 (impossible de lire la propriété drawing objects de la classe dialogsheet)

est ce que vous avez une idée

merci d'avance
Lire la suite 

VBA erreur 1004 »

26 réponses
Réponse
+2
moins plus
Bonjour,


Oui ma deuxieme feuille existe elle s'appelle resultats

Worksheets(2).activate
Cells(17, 2).Select
j'ai ecris ce code mais sur le Cells(17, 2).Select ça me met toujours l'erreur 1004 select method or class failed
ShaBoo - 23 nov. 2007 à 10:49
Essaye ceci :

'Worksheets(2).activate
'Cells(17, 2).Select 

Worksheets(2).Cells(17, 2).Select
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour,


comment fais ton pour ajouter un fichier ici???
ShaBoo - 23 nov. 2007 à 11:18
tu vas ici ou bien ici ...
pti beignet - 23 nov. 2007 à 11:36
Bonjour,

je t'explique mon excel

en selectionnant un chiffre dans le table de couleur et tranche de ca:
la deuxiemme feuille doit filtrer la liste avec les criteres donnés
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

L'erreur 1004 est une erreur très standard qui stipule un
débordement de l'indice de l'objet. Il est très difficile de
trouver ce genre d'erreur sans voir le code.

J'ai eu aussi quelques déboire avec le passage de 95 à 97
et entre autre le nom des feuilles changeaient dans certaines
circonstances.

Si tu veux plus d'aide, transcrit ton code ici !

Lupin
blona92 - 25 nov. 2009 à 15:18
Bonjour,

J'ai un probléme sur VBA . J'ai une macro qui doit me permettre à partir de la data d'un onglet d'obtenir d'autres onglets mais quand je l'exéute j'ai un débogage que je n'arrive pas à expliquer,,,!!!!
Private Sub MacroLiasseBudget_CopyOneModule()

Dim FName, Ligne As String
Dim i, j, k As Integer
Set Classeur = ActiveWorkbook

With Workbooks("Macro Extraction Oracle.xla")
FName = .Path & "\CodeCopyOneModule.txt"
If Dir(FName) <> "" Then
Kill FName
End If
.VBProject.VBComponents("LB").export FName
End With

With Classeur
For j = 1 To .VBProject.VBComponents.Count
If .VBProject.VBComponents(j).Name = "Feuil1" Then
With .VBProject.VBComponents(j).CodeModule
.AddFromFile FName
.DeleteLines 1, 4
End With
End If
Next j
End With

End Sub

alors quand j'exécute mon bouton j'ai un bug sur cette ligne

.VBProject.VBComponents("LB").export FName

il me met erreur 1004 et je n'arrive pas à savoir pourquoi?????
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Tu dois activer ta feuille avant de sélectionner une cellule
d'autre part, pour avoir B17 il faut (17,2) et non pas (2,17)
Worksheets(2).activate
Cells(17, 2).Select 
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

je viens de le deposer le lien est:
http://www.cijoint.fr/cij102725268832601.xls
ShaBoo - 23 nov. 2007 à 11:40
Essaye ceci :

Private Sub Workbook_Open()

'Worksheets("resultats").Activate
'Cells(17, 2).Activate
Worksheets(2).Select
Worksheets(2).Cells(17, 2).Select
MsgBox "cellule selectionné"

End Sub
ShaBoo - 23 nov. 2007 à 11:53
Sub Filtre_2()
Dim i As Integer
MsgBox "entre dans la boucle "
  'Worksheets(2).Cells(2, 17).Select
'Worksheets("resultats").Range ("B17")
' Worksheets(2).Select
'Cells(2, 17).Select
'Cells(2, 17).Select
'Range("B17").Select
Workbook_Open
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).AutoFilter Field:=3, Criteria1:=head_left
Range(Selection, Selection.End(xlDown)).AutoFilter Field:=2, Criteria1:=head_up

End Sub




Que cherches tu à faire avec cette procedure ???
pti beignet - 23 nov. 2007 à 12:05
Bonjour,


en gros je veux selectionner ma plage de la liste à trier
je commence par selectionner la premiere cellule puis apres avec les fontions je determine le la fin de ma liste et le auto filter me permet de filtrer

Je sens que je ne suis pas clair!
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,



ahhh merciiiiiiii!c'est bon pour ça !
mais du coup pkoi ça ne marchais pas?
je suis obligé de selectionner la feuille puis la feuille et la cellule?????
ShaBoo - 23 nov. 2007 à 12:01
bin ... tu es sur un evenement d'ouverture, et Excel doit initialiser pas mal de chose (du moins je pense ;p). Et là il devait pas retrouver ces petits ...
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour pour le boulot j’ai paramétré un tableau de bord alimenté à partir d’une base des données, ça marchait mais depuis une semaine il m’affiche « run time error ‘1004 : méthode ’range of Object worksheet failed » . L’erreur se produit dans une page qui contient les indicateurs en chiffre pour alimenter les objets (histogramme, thermomètre ..) . je suis vraiment coince et en plus j’ai une réunion de reporting la semaine prochaine. J’ai besoin de votre aide SVP. Je peux transmettre le fichier si vous voulez.
Suite à ce message qu’on je veux déboguer, il l’ouvre cette fenêtre et il marque une ligne en jaune.

****************************
' Met à jour tous les indicateurs programmés
'**********************************
Private Sub CommandButton1_Click()
'appel de la fonction feu rouge
'Feu rouge alerte client
seuilbas = Feuil2.Range("FR1SB").Value 'lit la valeur du seuil bas
seuilhaut = Feuil2.Range("FR1SH").Value 'lit la valeur du seuil haut
valeur = Feuil2.Range("FR1VAL").Value 'lit la valeur (cette ligne est en jaune)
Call Module1.Feurouge(seuilbas, seuilhaut, valeur, 1)
'Feu rouge alerte budget
seuilbas = Feuil2.Range("FR2SB").Value 'lit la valeur du seuil bas
seuilhaut = Feuil2.Range("FR2SH").Value 'lit la valeur du seuil haut
valeur = Feuil2.Range("FR2VAL").Value 'lit la valeur
Call Module1.Feurouge(seuilbas, seuilhaut, valeur, 2)
'Feu rouge alerte processus
seuilbas = Feuil2.Range("FR3SB").Value 'lit la valeur du seuil bas
seuilhaut = Feuil2.Range("FR3SH").Value 'lit la valeur du seuil haut
valeur = Feuil2.Range("FR3VAL").Value 'lit la valeur
Call Module1.Feurouge(seuilbas, seuilhaut, valeur, 3)

' appel de la fonction jauge verticale
' L'ascenseur permet de faire varier la mesure à titre de démonstration
'Jauge urgence
seuilbas = Range("INDIC1SB").Value 'lit la valeur du seuil bas en H12
seuilhaut = Range("INDIC1SH").Value 'lit la valeur du seuil haut en H13
objectif = Range("INDIC1OBJ").Value 'lit la valeur de l'objectif
valeur = Range("INDIC1VAL").Value 'lit la valeur
Call Module2.jaugeV(seuilbas, seuilhaut, valeur, objectif, 1)
'Jauge normal
seuilbas = Range("INDIC2SB").Value 'lit la valeur du seuil bas en H12
seuilhaut = Range("INDIC2SH").Value 'lit la valeur du seuil haut en H13
objectif = Range("INDIC2OBJ").Value 'lit la valeur de l'objectif
valeur = Range("INDIC2VAL").Value 'lit la valeur
Call Module2.jaugeV(seuilbas, seuilhaut, valeur, objectif, 2)



Feuil1.Activate 'Appel de la page de signalisation
End Sub

Merci d’avance, je ne suis pas un grand connaisseur VB
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Contrôle sur ta feuille 2 si tu as bien un nom FR1VAL.
Menu 'insertion / nom / definir ', il doit apparaitre dans la liste. S'il n'y est plus renomme la cellule concernée.

Tu peux déposer ton fichier sur cijoint.fr et coller ici le lien fourni.

eric
elima - 18 nov. 2009 à 18:38
ce programme même s'il est un peu casse-gueulle, fonctionne sur un de mes fichiers excel test mais pas sur un autre.

tout d'abord j'éxécute le module 1
module 1

Option Base 1


Sub ajouterpage()
Sheets.Add
ActiveSheet.Name = "finale"
End Sub

là j'ai déjà erreur 1004


puis j'aimerais qu'ensuite mon module 2 fonctionne

Module 2


Sub creationtableauSB()
Worksheets("final").Activate
Range("A1").Value = "safebridge"
Range("A2").Value = "couleur"
Range("B2").Value = "somme"

End Sub


pareil erreur

puis j'aimerais que le module 3 fonctionne

Module 3

Sub compter()
Dim Nom As String
Dim compteur1
Dim compteur2
lig = 0
col = 0

For i = 2 To Worksheets.Count 'Boucle qui permet de parcourir l'ensemble des feuilles excepté la feuille "Agreg1" qui est celle regroupant les données
Nom = CStr(Worksheets(i).Name) 'Création d'une variable chaîne de caractère retournant le nom de la feuille considérée
Worksheets(i).Activate

For lig = 1 To 60
For col = 1 To 60
If Cells(lig, col).Interior.ColorIndex = Worksheets("final").Range("A3").Interior.ColorIndex Then
compteur1 = compteur1 + 1
End If
If Cells(lig, col).Interior.ColorIndex = Worksheets("final").Range("A4").Interior.ColorIndex Then
compteur2 = compteur2 + 1
End If

Next col
Next lig
Next i


Worksheets("final").Activate
Range("B3").Value = compteur1
Range("B4").Value = compteur2

End Sub

comment faire pour débloquer le module 1 afin que les autres modules se débloquent?
Ajouter un commentaire
Réponse
+0
moins plus
Bonsoir,

déjà en disant bonjour et merci...
eric
elima - 18 nov. 2009 à 19:22
Je suis vraiment désolée j'ai envoyé ce message tout en faisant et en pensant autre chose.
Pardon d'avoir manqué à toutes les règles de politesse!!
Je ne m'en étais même pas rendu compte, je n'ai pas relu, j'ai surtout fait des copier-coller. Merci de l'avoir noté aussi vite que je puisse tenter de réparer cette erreur.

Alors je recommence si je peux.

Bonsoir,

Merci de m'aider si c'est possible.
Comme je ne comprends pas bien pourquoi un programme qui marche sur un fichier excel ne peut pas marcher sur un autre fichier excel sachant que le programme est celui posté dans mon message (à la hâte) précedent et que le deuxième fichier excel est relativement lourd (je n'ai pas encore adapté l'intérieur du module 3), j'aimerais savoir ce qui cause l'erreur 1004.

Veuillez, s'il vous plait, excuser une débutante bien négligente parfois!

Merci encore!

Sincèrement

Elima
Ajouter un commentaire
Réponse
+0
moins plus
C'est sûrement parce que ta feuille est déjà créée, il faut tester avant.
exemple :
Sub ajouterpage()
    Dim actsh As Worksheet
    'sauvegarder feuille active
    actsh = ActiveSheet
    On Error GoTo suite
    Worksheets("finale").Activate
    ' si pas d'erreur créer la feuille
    Sheets.Add
    ActiveSheet.Name = "finale"
suite:
    'restaurer feuille active
    actsh.Activate
End Sub


D'autre part c'est beaucoup plus efficace de créer ta propre discussion que de te rattacher à un sujet ancien ayant eu des réponses, pas grand monde ne les lit...
eric
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Je souhaiterais modifier le gradiant color sur un graphique via script vb sous Excel Xp.

J'ai enregistré la macro en effectuant l'opération, puis j'essaye de le rejouer via le script.

Cepedant, j'obtiens également une erreur 1004... Comme si Excel n'arrivait pas à relire ce qu'il a lui même écrit.

Sauriez-vous d'ou vient ce problème et comment le corriger ?

Merci par avance pour votre aide,

PS : Ci-joint le script enregistré et tenté de rejoué :

Sub test()
'
With Selection.Border
.ColorIndex = 1
.Weight = xlThin
.LineStyle = xlContinuous
End With
Selection.Fill.OneColorGradient Style:=msoGradientHorizontal, Variant:=1, _
Degree:=1

With Selection
.Fill.Visible = True
.Fill.ForeColor.SchemeColor = 39
End With
End Sub
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Moi j'ai tout simplement "enregistrer sous" le fichier avec l'ancienne version d'excel:

Enregistrer sous / Classeur Excel 97-2003

Voila
Ajouter un commentaire
Réponse
-1
moins plus
Bonjour,


non j'ai deja essayé ça toujours la meme erreur je comprend pas pkoi!
ShaBoo - 23 nov. 2007 à 10:54
Bizarre !!!

Je fais le teste sur mon poste et cela fonctionne ...

Peux tu mettre ton fichier en ligne stp ...
Ajouter un commentaire
Réponse
-2
moins plus
Bonjour,


alors voila j'ai un pti soucis mais je trouve pas la solution
j'ai beau chercher mais rien!
ah oui j'oubliais je suis novice en vba.
je veux selectionner la cellule b17 dans ma deuxieme feuille
donc j'ecris Worksheets(2).Cells(2, 17).Select
mais j'ai une erreur 1004 qui survient je ne comprend pas pourquoi car je pense que la syntaxe est bonne!
je me dis que c'est peut etre un probleme de version ou encore de references!!
Si quelqu'un pourrait m'aider ce serait sympas!

Merci d'avance
ShaBoo - 23 nov. 2007 à 10:25
Bonjour,

B17 correspond à la 2eme colonne de la 17eme ligne.

L'utilisation de Cells se fait comme ceci : Cells(ligne, colonne)

=> Worksheets(2).Cells(17,2).Select

Est-ce que ta feuille 2 existe ???
Ajouter un commentaire
Ce document intitulé « VBA erreur 1004 » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Windows 8 - À quoi s'attendre ?