IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Erreur 1004 incomprehensible (à mes yeux) [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 65
    Par défaut Erreur 1004 incomprehensible (à mes yeux)
    Bonjour a tous,

    J'ai un probleme qui a mes yeux est assez incomprehensible. Et j'espere que vous allez m'aider parce que la, je donne ma langue au chat.

    Je suis sur un projet dans lequel j'utilise un userform pour remplir plusieurs de feuilles d'un meme classeur.
    En gros, j'ai deux feuilles : StaffEvaluation et Training.
    Je demande a l'utilisateur de remplir dans l'userform un certain nombre de donnees que j'insere apres dans les deux feuilles, a la fin.

    Voici mon code (mon probleme est en note rouge dans le code):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    
    Private Sub CommandButton2_Click()
    
    'Deactivate the macro event of "Staff Evaluation" and "Training"
        Application.EnableEvents = False
    
    
        Dim i As Integer, j As Integer
        Dim macrosheet As Worksheet
        Set macrosheet = Workbooks("Succession plan").Worksheets("for macro")
    
    'REMPLIT LA FEUILLE "STAFF EVALUATION"
        
        'Trouve la derniere ligne de la feuille
        Dim StaffEvaluation As Worksheet
        Set StaffEvaluation = Workbooks("Succession plan").Worksheets("Staff Evaluation")
        i = StaffEvaluation.Range("A65536").End(xlUp).Row + 1
        
        'Remplit la derniere ligne avec les donnees de l'userform
        With StaffEvaluation
            .Range("B" & i).Value = "0pen"
            .Range("C" & i).Value = "0pen"
            If ComboBox1 <> "Other" Then
                .Range("E" & i).Value = ComboBox1
            Else
                .Range("E" & i).Value = TextBox7
                j = macrosheet.Range("A65536").End(xlUp).Row
                macrosheet.Range("A" & j).Insert Shift:=xlDown
                macrosheet.Range("A" & j).Value = TextBox7
            End If
            .Range("G" & i).Value = TextBox1
            .Range("H" & i).Value = TextBox2
            .Range("L" & i).Value = TextBox3
        End With
        
        'Met en forme la ligne inserer
        StaffEvaluation.Rows(i).RowHeight = 25.5
        With StaffEvaluation.Rows(i)
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
        End With
        With StaffEvaluation.Range(Cells(i, 7), Cells(i, 8))
            .HorizontalAlignment = xlGeneral
            .VerticalAlignment = xlCenter
        End With
    
        'Jusque la, tout semble fonctionner correctement. Mais la
    ou cela devient incomprehensible, c'est que je fais exactement la meme
    chose pour la feuille Training et j'ai une erreur 1004. Voici la suite
    immediate du code :
    
    'REMPLIT LA FEUILLE "TRAINING"
        
        'Trouve la derniere ligne
        Dim Training As Worksheet
        Set Training = Workbooks("Succession plan").Worksheets("Training")
        i = Training.Range("A65536").End(xlUp).Row + 1
        
        'Remplit la derniere ligne de la feuille avec les donnees de l'userform
        With Training
            .Range("A" & i).Value = "0pen"
            .Range("B" & i).Value = "0pen"
            .Range("C" & i).Value = ComboBox1
            .Range("D" & i).Value = TextBox1
            .Range("E" & i).Value = TextBox2
            If ComboBox2 <> "Other" Then
                .Range("I" & i).Value = ComboBox2
            Else
                .Range("I" & i).Value = TextBox6
                j = macrosheet.Range("C65536").End(xlUp).Row
                macrosheet.Range("C" & j).Insert Shift:=xlDown
                macrosheet.Range("C" & j).Value = TextBox6
            End If
        End With
        
        'Mise en forme de la feuille
        Training.Rows(i).RowHeight = 25.5
        With Training.Rows(i)
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
        End With
       'ICI EST L'ERREUR 1004 DISANT:
        METHOD 'RANGE' OF OBJECT'_WORKSHEET' FAILED
        With Training.Range(Cells(i, 7), Cells(i, 8))
            .HorizontalAlignment = xlGeneral
            .VerticalAlignment = xlCenter
        End With
        With Training.Rows.Font
            .Name = "Arial"
            .Size = 10
        End With
    Pourquoi, cette erreur 1004 (je ne comprends meme pas ce que veut dire le message d'erreur) alors que j'ai le meme code avant pour la feuille StaffEvaluation et que je n'ai pas ce probleme ?

    Votre aide me sera d'un grand secours.

    Merci d'avance,

    Pubbins.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 65
    Par défaut
    Citation Envoyé par pubbins Voir le message
    Pourquoi, cette erreur 1004 (je ne comprends meme pas ce que veut dire le message d'erreur) alors que j'ai le meme code avant pour la feuille StaffEvaluation et que je n'ai pas ce probleme ?
    En fait l'erreur 1004 se produit aussi pour le debut du code pour la ligne :
    With StaffEvaluation.Range(Cells(i, 7), Cells(i, 8))

    Mes excuses,

    Pubbins

  3. #3
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Essaye comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Training.Range(Training.Cells(i, 7), Training.Cells(i, 8))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With StaffEvaluation.Range(StaffEvaluation.Cells(i, 7), StaffEvaluation.Cells(i, 8))

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 65
    Par défaut
    Merci beaucoup Fring, ca marche !!!

    Le seul probleme, c'est que j'ai deux nouveaux problemes qui viennent d'apparaitre.

    Le premier concerne la fonction sort. Une fois que j'ai ajouter une ligne a ma feuille Staff Evaluation, je veux la retrier en fonction des colonnes B et C.

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        StaffEvaluation.Range(StaffEvaluation.Cells(3, 1), StaffEvaluation.Cells(i, 13)).Sort Key1:=Range("C4"), Order1:=xlAscending, Key2:=Range( _
            "B4"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
            False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
            :=xlSortNormal
    Et la je recois l'erreur suivante de temps en temps (mais pas tout le temps !):
    Run-time error 1004
    The sort referenceis not valid. Make sure that it's within the data you want to sort, and the first Sort By Box isn't the same or blank.

    Pourtant, j'ai enregistrer une macro pour connaitre le code, cela marchait, j'ai juste change :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sheets("Training").Select
        Range("A2:J67").Select
        Range("J67").Activate
        Selection.Sort Key1:
    Par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StaffEvaluation.Range(StaffEvaluation.Cells(3, 1), StaffEvaluation.Cells(i, 13)).Sort Key1:
    Je ne comprends vraiment pas...


    La deuxieme erreur que j'ai est encore une erreur 1004 (decidemment ca n'arrete pas aujourd'hui). Dans la suite de mon code, je souhaite inserer une ligne a l'emplacement j.

    Je tape donc le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StaffEvaluation.Rows(j).Insert Shift:=xlDown
    et la PAF, sans crier garde: une nouvelle erreur 1004: METHOD 'RANGE' OF OBJECT'_WORKSHEET' FAILED

    Ma syntaxe est-elle bonne? Ou est l'erreur?

    Merci d'avance et encore merci pour la precedente reponse,

    Pubbins.

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Concernant le tri, essaye ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StaffEvaluation.Range(StaffEvaluation.Cells(3, 1), StaffEvaluation.Cells(i, 13)).Sort Key1:=StaffEvaluation.Range("C4"), Key2:=StaffEvaluation.Range("B4")
    Les autres paramètres "Order, MatchCase, Header, etc..." tu n'as pas besoin de les spécifier vu que tu gardes les valeurs par défaut.
    Si ça coince encore, vérifie la valeur de i juste avant le tri en ajoutant la ligne
    Concernant l'insertion de la ligne, la bonne syntaxe est la suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StaffEvaluation.Rows(j).EntireRow.Insert

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 65
    Par défaut
    Ok, tout marche (a part la fonction sort mais bon c'est pas grave, je le ferai a la main !).

    Merci encore,

    Pubbins.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Erreur 1004 sur toutes mes macros
    Par sosoboss dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/02/2015, 16h32
  2. erreur divers avec mes variables
    Par TheBlackReverand dans le forum MFC
    Réponses: 11
    Dernier message: 21/03/2006, 22h40
  3. [VBA][EXCEL]Erreur '1004' avec "Application.Run"
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/01/2006, 10h50
  4. [Excel] Erreur 1004 avec un search
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2005, 13h54
  5. Insérer une image : Erreur 1004
    Par dp_favresa dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 26/10/2005, 14h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo