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

Excel Discussion :

"Erreur 1004 : La méthode Select de la classe Range a échoué" - Macro VBA Excel [XL-2010]


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Par défaut "Erreur 1004 : La méthode Select de la classe Range a échoué" - Macro VBA Excel
    Bonjour tout le monde,

    Voilà j'ai un problème pour lancer ma macro sur Excel puisque ça affiche une erreur 1004 comme défini dans le titre, et je n'arrive pas à corriger cette erreur. Voici mon programme en entier (avec en rouge la ligne générant le problème) : Et merci d'avance pour votre aide.


    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
    Sub CreateLine(rowExport)
    Dim FL1 As Worksheet, FL2 As Worksheet
    Dim DerniereLigne As Integer
    Set FL1 = Worksheets("SUIVI TDMI BYT")
    Set FL2 = Worksheets("Export Infocentre")
    DerniereLigne = FL1.Range("A" & Rows.Count).End(xlUp).Row + 1
    FL2.Rows(rowExport).Copy FL1.Cells(Rows.Count, 1).End(xlUp)(2)
    FL1.Cells(DerniereLigne, 32) = Format(Now, "dd/mm/yyyy")
    FL1.Range("A" & DerniereLigne).Interior.Color = RGB(0, 255, 0)
    End Sub
    
    Sub UpdateLine(rowSuivi, rowExport)
    Dim FL1 As Worksheet, FL2 As Worksheet
    Set FL1 = Worksheets("SUIVI TDMI BYT")
    Set FL2 = Worksheets("Export Infocentre")
    FL1.Range("A" & rowSuivi).Interior.Color = RGB(255, 0, 0)
    FL1.Cells(rowSuivi, 23) = FL2.Cells(rowExport, 23)
    FL1.Cells(rowSuivi, 24) = FL2.Cells(rowExport, 24)
    FL1.Cells(rowSuivi, 25) = FL2.Cells(rowExport, 25)
    FL1.Cells(rowSuivi, 26) = FL2.Cells(rowExport, 26)
    FL1.Cells(rowSuivi, 27) = FL2.Cells(rowExport, 27)
    FL1.Cells(rowSuivi, 28) = FL2.Cells(rowExport, 28)
    FL1.Cells(rowSuivi, 29) = FL2.Cells(rowExport, 29)
    FL1.Cells(rowSuivi, 30) = FL2.Cells(rowExport, 30)
    FL1.Cells(rowSuivi, 32) = Format(Now, "dd/mm/yyyy")
    
    End Sub
    
    Sub For_X_to_Next_Ligne()
    Dim FL1 As Worksheet, NoCol As Integer
    Dim NoLig As Long, Var As Variant
    Set FL1 = Worksheets("Export Infocentre")
    NoCol = 1 'lecture de la colonne 1
    For NoLig = 2 To Split(FL1.UsedRange.Address, "$")(4)
    Var = FL1.Cells(NoLig, NoCol)
    Set Find = Sheets("SUIVI TDMI BYT").Columns("A").Find(Var)
    If Find Is Nothing Then
    Call CreateLine(NoLig)
    Else
    Range(Find, Find).Select 
    rowSuivi = ActiveCell.Row
    Call UpdateLine(rowSuivi, NoLig)
    End If
    Next
    Set FL1 = Nothing
    End Sub

  2. #2
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    Je pense que le problème vient du fait que ta variable "find" stock le texte recherché au lien de la position.

    Du coup quand tu selectionnes à l'aide de cette variable, çà plante.

    J'ai fait deux modifications à ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    For NoLig = 2 To Split(FL1.UsedRange.Address, "$")(4)
        Var = FL1.Cells(NoLig, NoCol)
        Set Find = Sheets("SUIVI TDMI BYT").Columns("A").Find(Var).Row 'on mémorisle n° de ligne
        If Find Is Nothing Then
            Call CreateLine(NoLig)
        Else
            Range("a" & Find).Select   'on se place dans la col A, sur la ligne trouvée plus haut
            rowSuivi = ActiveCell.Row
            Call UpdateLine(rowSuivi, NoLig)
        End If
    Next
    Je n'ai pas regarder le reste.

    En espérant que çà te fasse avancer.

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Déjà donner à une variable le nom d'une méthode, d'une propriété ou d'un objet VBA, c'est vraiment rechercher les problèmes.
    Et en plus, sans la déclarer.

    Le résultat de la méthode Find est une référence de cellule.
    Donc, inutile d'utiliser "Range" avec.
    Il suffit de mettre
    Comme toujours, le diable est dans la variable.
    En cas de bug, le premier réflexe doit être de vérifier le contenu des variables.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Par défaut
    Merci pour vos réponses! Du coup c'est bon j'ai pu débloquer mon programme, à la prochaine .

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/01/2016, 12h52
  2. [XL-2007] Erreur d'execution "1004" la méthode autofilter de la classe range a échoué
    Par adamskone dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 11/09/2014, 00h41
  3. Réponses: 11
    Dernier message: 09/07/2014, 16h40
  4. Réponses: 13
    Dernier message: 29/06/2007, 18h03

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