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 :

Method select de la classe range échoue [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Method select de la classe range échoue
    Bonjour à tous,

    Je travail actuellement sur une routine me permettant de générer automatiquement des graphiques à partir d'un tableau précédement renseigné.

    Les données nécessaires aux graphiques n'étant pas équitablement réparties dans ce premier formulaire, et nécessitant égalment un traitement, je passe par un tableau intermédiaire, innaccessible aux utilisateurs finaux.

    Dans un souci de garder à jour ce second tableau j'avais besoin de pouvoir rajouter des colonnes d'après un modèle enregistré dans la première colomne de ma feuille.
    J'enregistre donc une macro me donnant ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    sub macro9()
       Range("A1:A68").Select
        Application.CutCopyMode = False
        Selection.Copy
        ActiveWindow.ScrollColumn = 2
    '    ........plein de scroll
        ActiveWindow.ScrollColumn = 38
        ActiveWindow.ScrollColumn = 37
        ActiveWindow.SmallScroll Down:=-48
        Range("AS1").Select
        ActiveSheet.Paste
    End Sub
    Je l'adapte donc de cette manière:

    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
     
    Private Sub CommandButton1_Click()
        Dim cel As Range
        Dim i As Integer
        Worksheets("Macrotables").Activate
     
        'Last column research
        i = 4
        Do While Cells(1, i).Value <> ""
            i = i + 1
            Loop
     
        'First column copy
        Range("A1:A68").Select 'bugged lign
        Application.CutCopyMode = False
        Selection.Copy
     
        Range(Cells(1, i + 1).adress).Select
        ActiveSheet.Paste
     
        Cells(70, 4).Value = Cells(68, i + 1).Address
     
        'Cleaning
        For Each cel In Range("D2", Cells(70, 4).Value)
            If cel.Value = 0 Then
                cel.ClearContents
            End If
            If VarType(cel.Value) = vbString Then
                cel.ClearContents
            End If
        Next
        Cells(70, 4).Value = Cells(68, 45).Address
     
    End Sub
    Seulement lorsque je lance ma macro il me sort une erreur:

    Run-time error '1004':
    La methode select de la classe range a échoué

    Erreur qui n'est pas présente sur l'execution de la macro enregistré. Pourquoi donc?

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Evite les Select, pas besoin de sélectionner une plage pour la copier;
    ton code pourrait être écris comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CommandButton1_Click()
    Dim Cel As Range
    Dim LastCol As Integer
     
    With Sheets("Macrotables")
        LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
        .Range("A1:A68").Copy .Cells(1, LastCol + 1)
        For Each Cel In .Range(.Cells(2, 4), .Cells(68, LastCol + 1))
            If Cel.Value = 0 Or VarType(Cel.Value) = vbString Then Cel.ClearContents
        Next Cel
    End With
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci mercatog ça marche.

    Effectivement mon code n'était pas vraiment condensé. Je dois dire qu'il s'agissait encore plus d'un bricollage que d'un code vraiment réfléchi et que je ne me suis pas encore habitué à l'utilisation du with.
    Par contre j'ignorais qu'on pouvais déterminé comme ça la dernière colonne non vide, je suppose qu'on peut faire pareil avec les lignes?

    Encore merci donc, mais j'avoue que j'aurais bien aimé savoir pourquoi j'avais cette erreur...

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

Discussions similaires

  1. [XL-2010] erreur 1004 methode delete classe range échouée
    Par emi81 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 13/03/2013, 17h50
  2. Problème Select (Methode Select de la classe Range à échoué)
    Par linkcr15 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 05/06/2012, 09h43
  3. [XL-2002] [VBA-USERFORM] select de la classe range
    Par shinji7800 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 19/05/2009, 09h26
  4. La methode sort de la classe range a échouée
    Par titeZ dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 24/08/2007, 15h25
  5. la methode select de la classe range a échoué
    Par shrekos007 dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 26/05/2007, 15h51

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