Excel erreur 1004

Fermé
Jetil - 26 déc. 2007 à 16:51
 grgr - 30 sept. 2008 à 07:11
Bonjour,

Pour le boulot, je doit faire un fichier sur Excel qui me permette d'attribuer un numéro à des factures, au fur et à mesure que je les rentre.

Je suis novice en macro et en VB, je suis sur Excel 2003 et j'ai recopié (à la main) une macro d'un autre fichier que j'avais.
Mon problème est le suivant :
"erreur 1004
La méthode Sort de la classe range a échoué".


Je ne sais pas trés bien à quoi cela correspond...

Pouvez-vous m'aider ?

Voici la macro :
Sub CréationNuméro()
'
'ActiveSheet.Unprotect
Range("C8").Select
Range(Range("C8" & ActiveCell.Row), Range("IV" & ActiveCell.Row).End(xlToLeft)).Select
'Entrée des données
Range("D4").Select
Destinataire = ActiveCell.Value
'
Range("E4").Select
TypeDoc = ActiveCell.Value
'
Range("F4").Select
Intitulé = ActiveCell.Value
'
Range("G4").Select
Auteur = ActiveCell.Value
'
Range("H4").Select
Somme = ActiveCell.Value
'
If (Destinataire = "" Or TypeDoc = "" Or Intitulé = "" Or Auteur = "" Or Somme = "") Then GoTo Fin
'Insertion d 'une ligne
Rows("8:8").Select
Selection.Copy
Selection.Insert Shift:=xlDown
Range("B8:K8").Select
Application.CutCopyMode = False
Selection.ClearContents
'Renseignement des valeurs
Range("B8").Select
ActiveCell.FormulaR1C1 = Date
'
Range("C9").Select
Chrono = ActiveCell.Value
Range("C8").Select
ActiveCell.FormulaR1C1 = Chrono + 1
'
Range("D8").Select
ActiveCell.FormulaR1C1 = Destinataire
'
Range("E8").Select
ActiveCell.FormulaR1C1 = TypeDoc
'
Range("F8").Select
ActiveCell.FormulaR1C1 = Intitulé
'
Range("G8").Select
ActiveCell.FormulaR1C1 = Auteur
'
Range("H8").Select
ActiveCell.FormulaR1C1 = Somme
'
Range("D4:H4").Select
Selection.ClearContents
'
Fin:
'
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
'
End Sub

MERCI !
A voir également:

9 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 713
16 juil. 2008 à 10:47
bonjour


comment redefinir ses cellules (variable)
Ta question ne me permet pas de te répondre car tu utilises des cellules nommées

Mets ton fichier sur : https://www.cjoint.com/

Puis tu nous mets ici le lien généré.
2
c'est fait merci d'avance, pour le mot de passe du code ax21
j'epère que vous allez resoudre le problème.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249 > mamou
17 juil. 2008 à 16:51
Puis tu nous mets ici le lien généré
0
mamou > eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024
18 juil. 2008 à 10:51
je n' ai pas compris ta demande eric.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249 > mamou
18 juil. 2008 à 12:04
C'est lourd les gens à qui il faut faire la lecture....
Post 10 :
Mets ton fichier sur : https://www.cjoint.com/
Puis tu nous mets ici le lien généré.
0
bjr

tu ne peux ajouter une ligne ,si ta feuille est protégée, voila pourquoi tu as cette erreur
il faut donc deprotèger avant ta procédure et proteger en fin de procédure



Sub CréationNuméro()
'
ActiveSheet.Unprotect 'deprotection ici
Range("C8").Select
Range(Range("C8" & ActiveCell.Row), Range("IV" & ActiveCell.Row).End(xlToLeft)).Select
'Entrée des données
Range("D4").Select
Destinataire = ActiveCell.Value
'
Range("E4").Select
TypeDoc = ActiveCell.Value
'
Range("F4").Select
Intitulé = ActiveCell.Value
'
Range("G4").Select
Auteur = ActiveCell.Value
'
Range("H4").Select
Somme = ActiveCell.Value
'
If (Destinataire = "" Or TypeDoc = "" Or Intitulé = "" Or Auteur = "" Or Somme = "") Then GoTo Fin
'Insertion d 'une ligne
Rows("8:8").Select
Selection.Copy
Selection.Insert Shift:=xlDown
Range("B8:K8").Select
Application.CutCopyMode = False
Selection.ClearContents
'Renseignement des valeurs
Range("B8").Select
ActiveCell.FormulaR1C1 = Date
'
Range("C9").Select
Chrono = ActiveCell.Value
Range("C8").Select
ActiveCell.FormulaR1C1 = Chrono + 1
'
Range("D8").Select
ActiveCell.FormulaR1C1 = Destinataire
'
Range("E8").Select
ActiveCell.FormulaR1C1 = TypeDoc
'
Range("F8").Select
ActiveCell.FormulaR1C1 = Intitulé
'
Range("G8").Select
ActiveCell.FormulaR1C1 = Auteur
'
Range("H8").Select
ActiveCell.FormulaR1C1 = Somme
'
Range("D4:H4").Select
Selection.ClearContents
'
Fin:
'
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'protection ici

'
End Sub
2
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 713
27 déc. 2007 à 18:11
bonjour

Comment faire en sorte que ma cellule contenant le numéro chrono soit de format "texte" ? Est-ce possible ?


C'est possible, il suffit de transformer la valeur texte en numérique lorsque l'on s'en sert.
Je te remet ta macro simplifiée car c'est inutile de sélectionner les cellules. Cela est plus long à écrire et surtout à exécuter.
Sub CréationNuméro()
'
ActiveSheet.Unprotect
'Range("C8").Select     ces 2 lignes sont inutiles
'Range(Range("C8" & ActiveCell.Row), Range("IV" & ActiveCell.Row).End(xlToLeft)).Select
'Entrée des données
Destinataire = Range("D4").Value    ' pas besoin de faire une sélection
'
TypeDoc = Range("E4").Value
'
Intitulé = Range("F4").Value
'
Auteur = Range("G4").Value
'
Somme = Range("H4").Value
'
If (Destinataire = "" Or TypeDoc = "" Or Intitulé = "" Or Auteur = "" Or Somme = "") Then GoTo Fin
'Insertion d 'une ligne
Rows("8:8").Copy
Rows("8:8").Insert Shift:=xlDown
Application.CutCopyMode = False
Range("B8:K8").ClearContents
'Renseignement des valeurs
Range("B8").Value = Date
'
Chrono = Val(Range("C9").Value) ' on prend la valeur numérique de la cellule format texte
Range("C8").Value = Chrono + 1
'
Range("D8").Value = Destinataire
'
Range("E8").Value = TypeDoc
'
Range("F8").Value = Intitulé
'
Range("G8").Value = Auteur
'
Range("H8").Value = Somme
'
Range("D4:H4").ClearContents
'
Fin:
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
'
End Sub

2
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 713
9 juil. 2008 à 22:29
bonjour

il l’ouvre cette fenêtre et il marque une ligne en jaune

Quelle ligne ?

L'intérêt de ton code c'est de nous fournir le point de blocage.
2

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 713
12 juil. 2008 à 11:14
bonjour

Si la cellule nommée FR1VAL a été supprimée par exemple ta macro ne peut plus fonctionner
2
comment redefinir ses cellules (variable) STP, je peux même vous envoyer le fichier
Please j'ai besoin d'une réponse et merci
0
gros boulet
1
MERCI BCP !!! CA MARCHE !

Une bête erreur de d'apostrophe...

Une question de plus, si je peux...
Comment faire en sorte que ma cellule contenant le numéro chrono soit de format "texte" ? Est-ce possible ?
re-merci
0
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
0
C’est la sixième ligne (valeur= ) qui est marquée en jaune, je l’ai mentionné entre parenthèses.
Et merci d’avance
0