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 :

Comment sélectionner un tableau avec le nom de la colonne et de ligne [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 24
    Par défaut Comment sélectionner un tableau avec le nom de la colonne et de ligne
    Bonjour à tous,
    Voilà j'ai un tableau avec des données (jusque là rien d'anormal), et je voudrais copier les 5 premières lignes de celui-ci. J'ai réussie à créer la boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For MaLigne = PremiereLigne To DerniereLigne
        If MaLigne Mod Nb_Ligne_Voulu = 0 Then
        'Sélectionner le tableau
        End If
        Next
    Avec la variable PremiereLigne déclarée en dur (pas trouvé d'autres solutions mais bon pas le plus important), DerniereLigne correspondant à la dernière ligne de mon tableau (là aussi tout va bien) et Nb_Ligne_Voulu le nombre qui donne la récurrence de la sélection ( si = 5 alors select toutes les 5 lignes). Là tout va bien mais je bloque à une chose pourtant basique: sélectionné le morceau de tableau.
    De plus j'ai une plage de donnée nommée "dernièreCol" qui représente la colonne la plus à Droite de mon tableau. Donc je connais la colonne et la ligne finale mais n'arrive pas à faire la sélection...
    Je débute un peu en vba je manque surement d'expérience j'espère avoir été clair merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 676
    Par défaut
    Bonjour,

    Intéresse toi au paramètre step de la boucle for.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For MaLigne = PremiereLigne To DerniereLigne step 5
    range(cells(MaLigne ,1),cells(MaLigne +4,dernièreCol)).select
        Next
    Cela dit la sélection est souvent inutile en vba, tu peux très bien t'en passer.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    plage.select
    selection.copy
    s'écrit : plage.copy

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 24
    Par défaut
    Salut merci pour ta réponse mais malheureusement ça ne fonctionne pas ... J'avais déjà essayé quelque choses de ce type (pour la sélection) mais sans succès et je ne comprends pas pourquoi d'ailleurs...
    Voilà quand même le code de test que j'ai utilisé voir si j'ai pas fait une erreur bête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro1()
     
    PremiereLigne = 1
    DerniereLigne = 10
     
    For MaLigne = PremiereLigne To DerniereLigne Step 5
    Range(Cells(MaLigne, 1), Cells(MaLigne + 4, dernièreCol)).Select
        Next
     
    End Sub
    De plus le message d'erreur est '1004' erreur définie par l'application ou par l'objet... Si ça peut aider

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 676
    Par défaut
    De plus le message d'erreur est '1004' erreur définie par l'application ou par l'objet
    Avec la ligne incriminé ce serait encore mieux, même si là ça peut paraitre évident c'est un bon réflexe à prendre.

    Que vaut la variable dernièreCol au moment de l'erreur ?

    Si ton code est bien celui que tu présente, comme elle n'est pas initialisé, elle vaut 0 ce qu'Excel n'apprécie pas

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    Bonjour à tous,
    Voilà j'ai un tableau avec des données (jusque là rien d'anormal), et je voudrais copier les 5 premières lignes de celui-ci. J'ai réussie à créer la boucle
    perso je vois pas pourquoi boucler

    comme tu ne l'a pas déterminé on va faire pour les deux

    1° ton tableau est un range
    exemple "C1,h20 " et tu a nommé cette plage "toto"
    et bien pour copier les 5 premières lignes ailleurs

    c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     dim maplage as range
    set maplage=range("toto").resize(5,maplage.columns.count)
    maplage.copy destination:=sheets("truc").range("A1") 'A1 etant la premiere cellule de la partie du tableau copié

    2°si c'est un tableau structuré nommé "montableau"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim maplage as range
    with sheets("truc").listobjects("montableau").
    set maplage =.DataBodyRange.resize(5,.listcolumns.count)
    maplage.copy destination:= sheets("truc").range("A1")
    end with
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 24
    Par défaut
    Citation Envoyé par halaster08 Voir le message
    Avec la ligne incriminé ce serait encore mieux, même si là ça peut paraitre évident c'est un bon réflexe à prendre.

    Que vaut la variable dernièreCol au moment de l'erreur ?

    Si ton code est bien celui que tu présente, comme elle n'est pas initialisé, elle vaut 0 ce qu'Excel n'apprécie pas
    Alors cette colonne est une plage nommée où on y trouve des dates. Je pense que le problème vient de là, excel ne doit pas apprécier le fait que dans la fonction cells() on y mette une colonne entière (compréhensible d'ailleurs). Ce que je voulais faire (sans réussir T-T) c'était de prendre la n-ième valeur de la colonne. Par exemple quelque chose qui serait de la forme dernièreCol[6] par exemple.

    Merci en tout cas

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 24
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    perso je vois pas pourquoi boucler
    Alors en faite la boucle est assez importante care j'aimerais copier 5 par 5 les lignes de mon tableau pour créer une liaison avec un doc powerpoint. Or chaque mois le nombre de donnée peut changer voila tout
    En même temps je suis pas sûr de m'etre bien exprimé sur cet aspect de récurrence vous pouviez pas deviner :3 . Cependant je garde l'idée pour la sélection d'un tableau de type range (qui est mon cas) je vais faire quelques tests.
    Merci beaucoup

  8. #8
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 676
    Par défaut
    Citation Envoyé par Xpro93 Voir le message
    Alors cette colonne est une plage nommée où on y trouve des dates. Je pense que le problème vient de là, excel ne doit pas apprécier le fait que dans la fonction cells() on y mette une colonne entière (compréhensible d'ailleurs). Ce que je voulais faire (sans réussir T-T) c'était de prendre la n-ième valeur de la colonne. Par exemple quelque chose qui serait de la forme dernièreCol[6] par exemple.

    Merci en tout cas
    Ah ça change tout:
    Pour appeler une plage nommée c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("nom de la plage")
    Si tu veux la 6ème cellule c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("nom de la plage").cells(1,6)
    Si tu veux le numéro de la colonne de la 6ème cellule c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("nom de la plage").cells(1,6).column

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 21/06/2007, 16h02
  2. [MySQL] remplir un tableau avec les noms des champs d'une table
    Par solidaritok dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/04/2007, 13h47
  3. [C#] Comment remplir un tableau avec un arraylist
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 9
    Dernier message: 22/06/2006, 15h14
  4. [XSLT] - Comment selectionner une balise avec un nom variable ?
    Par bchabot dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/04/2006, 09h59
  5. Comment remplir un ComboBox avec le nom des feuilles Excel ?
    Par libracom dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/06/2005, 15h14

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