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 :

Problème d'affectation variable tableau [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien en étude
    Inscrit en
    Novembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien en étude
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 5
    Par défaut Problème d'affectation variable tableau
    Bonjour à tous,

    N'étant pas un expert dans la programmation, j'aurais besoin de votre aide.
    J'ai un bout de code qui me permet de compter le nombre de cellule d'une liste et ensuite de transférer cette liste dans une variable tableau.
    Quand je teste le code, OK tout fonctionne.
    Le lendemain je relance ma macro ca ne fonctionne plus. Je bidouille ca remarche.
    Le surlendemain ca ne fonctionne plus ??????

    Erreur d'exécution '1004'
    Erreur définie par l'application ou par l'objet
    J'aurais donc besoin de votre aide pour trouver le pourquoi du comment.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim nb_ligne As Integer
    Dim liste_tableau as variant
     
    Sub Créer_tableau()
        'Création tableau
        nb_ligne = ThisWorkbook.Sheets("Feuil1").Range("A1").End(xlDown).Row
        liste_tableau = ThisWorkbook.Sheets("Feuil1").Range(Cells(2, 1), Cells(nb_ligne, 2))
    End Sub
    Merci d'avance pour votre aide

  2. #2
    Membre à l'essai
    Homme Profil pro
    Technicien en étude
    Inscrit en
    Novembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien en étude
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 5
    Par défaut
    Re,

    J'ai trouvé la cause, je vous mets donc la solution si ca peut aider quelqu'un
    Le problème vient du code "Cells(x,x)" qui fait automatiquement référence à la feuille active si l'on ne lui affecte pas le lien complet donc dans mon cas il faut faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim nb_ligne As Integer
    Dim liste_tableau as variant
     
    Sub Créer_tableau()
        'Création tableau
        nb_ligne = ThisWorkbook.Sheets("Feuil1").Range("A1").End(xlDown).Row
        liste_tableau = ThisWorkbook.Sheets("Feuil1").Range(ThisWorkbook.Sheets("Feuil1").Cells(2, 1), ThisWorkbook.Sheets("Feuil1").Cells(nb_ligne, 2))
    End Sub
    Au final j'ai choisi de simplifier mon code de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim nb_ligne As Integer
    Dim liste_tableau as variant
     
    Sub Créer_tableau()
        'Création tableau
        nb_ligne = ThisWorkbook.Sheets("Feuil1").Range("A1").End(xlDown).Row
        liste_tableau = ThisWorkbook.Sheets("Feuil1").Range("A2:B" & nb_ligne)
    End Sub
    Bon courage

  3. #3
    Expert confirmé
    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 : 67
    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
    Billets dans le blog
    7
    Par défaut
    Bonjour Matt et bienvenu sur le Forum,

    2 remarques:

    1 - Pour désigner une dernière ligne (ou colonne) informée(s), mieux vaut partir de la dernière cellule de la feuille de travail.
    Pour ce faire, utiliser les propriétés End(xlUp) et End(xlToLeft).
    (Beaucoup d'exemples sur ce forum)
    2 - Si un objet est commun à plusieurs lignes (c'est le cas ici) alors, pour une meilleure lisibilité du code, il est conseillé d'utiliser la méthode With

    Tu peux développer en ce sens et retourner ton code modifié si besoin.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien en étude
    Inscrit en
    Novembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien en étude
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 5
    Par défaut
    Merci beaucoup pour ta réponse,

    Je vais peut-être dire des conneries mais j'avais privilégié "End(xlDown)" car dans mon entreprise il y a encore des PC avec Excel 97 (ET OUI CA EXISTE ENCORE !)

    Et comme le nombre maximum de cellule entre les anciennes version (avant 2007) et les nouvelles ne sont pas les mêmes, je ne voulais pas gérer cette particularité.
    Bon c'est dans l'éventualité ou l'on ai plus de 65 000 ligne.

  5. #5
    Expert confirmé
    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 : 67
    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
    Billets dans le blog
    7
    Par défaut
    Quand bien même. Je dirais même "Qui plus est"
    Lors de l'utilisation de la propriété End(xlUp), est pris en compte le nombre de lignes que la feuille détient (65000, 1000000...)

    Pour information, sauf erreur, le nombre de lignes et de colonnes est toujours une puissance de 2.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien en étude
    Inscrit en
    Novembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien en étude
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 5
    Par défaut
    D'accord,

    Mais si je ne me trompe pas, pour utiliser End(xlUp) il faut que je référence mon point de départ de ma recherche donc comment savoir ma dernière ligne sans faire un contrôle sur les versions d'Excel.

    Merci de développer ma curiosité ou mon ignorance.

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

Discussions similaires

  1. Affectation variable tableau
    Par mrsdeath dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 01/02/2017, 16h54
  2. [PHP 5.0] Problème avec une variable tableau dans une session
    Par diblasio dans le forum Langage
    Réponses: 5
    Dernier message: 23/08/2010, 09h59
  3. Problème d'affectation de variable
    Par bob33 dans le forum C
    Réponses: 3
    Dernier message: 04/11/2005, 17h01
  4. Problème d'initialisation variable tableau
    Par HeZiX dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2005, 16h30
  5. problème d'affectation de tableau ...
    Par Mike888 dans le forum C
    Réponses: 23
    Dernier message: 26/02/2005, 14h52

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