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 :

La méthode 'Range' de l'objet '_Worksheet' a échoué [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Autre
    Inscrit en
    Juin 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Autre
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut La méthode 'Range' de l'objet '_Worksheet' a échoué
    Bonjour,
    J'ai développé une macro dont le but est de créer une liste complète à partir d'autres listes.
    Toutes sont dans le même onglet
    J'ai actuellement 8 listes de domaines contenant différents sous-domaines. Chaque liste est en colonne et la première ligne contient un mot pour définir chacun des 8 domaines.
    Il y a ensuite une colonne vide, pour faire séparateur, puis une colonne qui fait l'objet de la macro.
    Il s'agit de prendre les sous-domaines de chaque colonne et de les ajouter en-dessous pour créer une liste complète. Dans la liste complète les 2 premières cellules ne doivent pas être modifiées.
    Ma macro fonctionnait bien jusqu'ici mais à présent elle ne fait plus la concaténation de toutes les colonnes, elle s'arrête après après avoir collé les sous-domaines de la 5ème colonne.
    Voici ma macro :
    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
    Private Sub Worksheet_Activate()
        'On efface la liste existante en col "J" sauf les 2 premières lignes
        Lig = Range("J1").End(xlDown).Row
        If Lig < 3 Then Lig = 3
        Range("J3:J" & Lig).Delete
        'On recopie les colonnes de "A" à la première colonne vide en col "J"
        Lig = 3
            'Application.EnableEvents = False
            For Col = 1 To Range("A1").End(xlToRight).Column
            LigFin = Cells(2, Col).End(xlDown).Row
            Set W = Range(Cells(2, Col), Cells(LigFin, Col))
            Range("J" & Lig & ":J" & Lig + LigFin - 2) = W.Value
            Lig = Lig + LigFin - 1
            'Application.EnableEvents = True
        Next Col
    
    End Sub
    La macro bloque sur la ligne 12.
    Merci pour vos idées.
    Cordialement

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Il serait intéressant que tu affiches la fenêtre "variables locales" afin de vérifier la valeur de LigFin lors de l’arrêt de la procédure.

    Cordialement.

  3. #3
    Candidat au Club
    Homme Profil pro
    Autre
    Inscrit en
    Juin 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Autre
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Pb comptage variable
    Bonjour,
    Merci pour idée qui me donne un résultat intéressant.
    En faisant la macro pas à pas avec l’affiche des variables locales, tout se passe de manière cohérente jusqu'à la colonne 6 (c'est bien la que se situe mon pb)
    La variable Lig indique la première cellule vide de la colonne J (où j'ajoute mes listes au fur et à mesure)
    C'est effectivement la variable LigFin qui pose problème.
    Tout se passe bien (compte le nombre de cellules non-vide de la colonne), jusqu'à la colonne 6 qui contient 5 cellules non vides et le compteur en compte 1048576.
    Je ne vois pas trop quel est le problème
    Merci

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    En colonne 6, si LigFin vaut 1048576, c’est qu’il n’y a pas de cellule renseignée sous la cellule F2 puisque cette détermination est faite avec l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LigFin = Cells(2, Col).End(xlDown).Row
    Cordialement.

  5. #5
    Candidat au Club
    Homme Profil pro
    Autre
    Inscrit en
    Juin 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Autre
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Résolu
    Bonjour,
    Merci pour cette info qui m'était passée inaperçue.
    Effectivement, dans la colonne 6, seules les 2 premières cellules étaient remplies.
    J'ai ajouté qqchose et c'est bon.
    Bref, ....
    Merrci beaucoup.
    Cordialement

  6. #6
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    J'ai ajouté qqchose et c'est bon
    Je ne crois pas que cela soit la bonne solution.
    Mieux vaut partir du bas de la feuille, ce qui n'empêcherait pas de déclarer une condition pour la suite du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Worksheets("lawks")
       derlign = . Cells(.Rows.Count, 12).End(xlUp).Row
        If derign < ...
    End With
    Pour ma part, j'aurais alimenté un tableau dont la transposition serait reversée à partir de la 1ère cellule de destination.
    Mais c'est un autre sujet.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


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

Discussions similaires

  1. La méthode range de l'objet '_worksheet' a échoué
    Par jerem488 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/11/2017, 23h24
  2. Réponses: 3
    Dernier message: 23/04/2014, 10h25
  3. Erreur 1004: La méthode "Range" de l'objet "_global" a échoué
    Par Froggy007 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 19/09/2008, 00h05
  4. erreur La méthode 'Range' de l'objet '_Global' a échoué
    Par mahboub dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/11/2006, 21h46
  5. [VBA-E]La méthode 'Range' de l'objet '_Global' a échoué
    Par repié dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/02/2006, 17h00

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