Excel erreur 1004

Jetil -  
 grgr -
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 !
Configuration: Windows XP
Internet Explorer 6.0
Excel 2003

9 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    1. mamou
       
      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
      1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281 > mamou
         
        Puis tu nous mets ici le lien généré
        0
      2. mamou > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
         
        je n' ai pas compris ta demande eric.
        0
      3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281 > mamou
         
        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
  2. néné
     
    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
  3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Si la cellule nommée FR1VAL a été supprimée par exemple ta macro ne peut plus fonctionner
    2
    1. mamou
       
      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
  7. Jetil
     
    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
  8. mamou
     
    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
  9. mamou
     
    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