Rechercher : dans
Par :

VBA erreur 1004

Dernière réponse le 25 nov 2009 à 15:18:10 séverine, le 18 aoû 2005 à 11:23:29 
 Signaler ce message aux modérateurs

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

1

Lupin.Arsene, le 18 aoû 2005 à 19:58:18

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
~L'essentiel est invisible pour les yeux~
~On ne voit bien qu'avec le coeur~

Répondre à Lupin.Arsene

24

 blona92, le 25 nov 2009 à 15:18:10

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?????

Répondre à blona92

2

pti beignet, le 23 nov 2007 à 10:11:19

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

Répondre à pti beignet

4

ShaBoo, le 23 nov 2007 à 10:25:41

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 ???

Répondre à ShaBoo

3

le père, le 23 nov 2007 à 10:22:41

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 

Répondre à le père

5

pti beignet, le 23 nov 2007 à 10:41:50

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

Répondre à pti beignet

6

ShaBoo, le 23 nov 2007 à 10:49:53

Essaye ceci :

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

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

Répondre à ShaBoo

7

pti beignet, le 23 nov 2007 à 10:51:33

Bonjour,


non j'ai deja essayé ça toujours la meme erreur je comprend pas pkoi!

Répondre à pti beignet

8

ShaBoo, le 23 nov 2007 à 10:54:23

Bizarre !!!

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

Peux tu mettre ton fichier en ligne stp ...

Répondre à ShaBoo

9

pti beignet, le 23 nov 2007 à 11:10:46

Bonjour,


comment fais ton pour ajouter un fichier ici???

Répondre à pti beignet

10

ShaBoo, le 23 nov 2007 à 11:18:04

Tu vas ici ou bien ici ...

Répondre à ShaBoo

12

pti beignet, le 23 nov 2007 à 11:36:32

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

Répondre à pti beignet

11

pti beignet, le 23 nov 2007 à 11:21:25

Bonjour,

je viens de le deposer le lien est:
http://www.cijoint.fr/cij102725268832601.xls

Répondre à pti beignet

13

ShaBoo, le 23 nov 2007 à 11:40:38

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

Répondre à ShaBoo

14

ShaBoo, le 23 nov 2007 à 11:53:36

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 ???

Répondre à ShaBoo

17

pti beignet, le 23 nov 2007 à 12:05:49

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!

Répondre à pti beignet

15

pti beignet, le 23 nov 2007 à 11:58:11

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?????

Répondre à pti beignet

16

ShaBoo, le 23 nov 2007 à 12:01:15

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 ...

Répondre à ShaBoo

18

mamou, le 9 jui 2008 à 13:08:51

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

Répondre à mamou

19

eriiic, le 9 jui 2008 à 13:41:45

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

Répondre à eriiic

20

elima, le 18 nov 2009 à 18:38:00

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?

Répondre à elima

21

eriiic, le 18 nov 2009 à 18:49:27

Bonsoir,

déjà en disant bonjour et merci...
eric

Répondre à eriiic

22

elima, le 18 nov 2009 à 19:22:50

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

Répondre à elima

23

eriiic, le 18 nov 2009 à 19:40:44

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

Répondre à eriiic