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 :

Macro VBA Excel 2016 - Selection de la plage de données d'un tableau [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Macro VBA Excel 2016 - Selection de la plage de données d'un tableau
    Bonjour à tous,

    Je rencontre un problème sur ma macro vba excel. Je vous avoue je suis plutôt début et suis perdu dans ma macro.
    Je vous place le contexte :
    - 1) je souhaite sélectionner la plage de données (sans les cellules vides) d'un tableau dont le nombre de colonnes et lignes varient.
    - 2) Mon tableau commence en cellule A1 et je considère que toutes les lignes tableau sont non vides.

    Ci-dessous 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sub Bouton5_Cliquer()
     
    'Déclaration des variables
    Dim Ligfin As Integer, Colfin As Integer
     
    'Attribution des valeurs
    Ligfin = Range("A1048576").End(xlUp).Row ' ou Ligfin = Cells(Rows.Count, 1).End(xlUp).Row
    Colfin = Range("XFD1").End(xlToLeft).Column ' ou Colfin = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
     
        'Boucle for
        For a = 1 To Ligfin '1 => N° de ligne
            For b = 1 To Colfin '1 => N° de colonne
     
            If a <> "" Or b <> "" Then 'Condition If pour s'arrêter à la dernière ligne et colonne non vides du tableau
     
            'Selection des valeurs à partir de cellule A1 feuille 2
            Worksheets(Feuil2).Activate.Range(Cells(1, 1), Cells(a, b)).Select
     
            Else
        'Quid de que je dois mettre quand le tableau rencontre une ligne et une colonne vide ???
     
            End If
     
            Next
     
        Next
     
     
        End Sub
    Merci d'avance pour votre aide.

    Cdlt.

    Aliocha7775

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,
    tu as tes limites, qui sont : fin de "vide"...
    'Attribution des valeurs
    Ligfin = Range("A1048576").End(xlUp).Row ' ou Ligfin = Cells(Rows.Count, 1).End(xlUp).Row
    Colfin = Range("XFD1").End(xlToLeft).Column ' ou Colfin = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    pas de "activate",
    'Selection des valeurs à partir de cellule A1 feuille 2
    Worksheets(Feuil2).Activate.Range(Cells(1, 1), Cells(a, b)).Select
    en résumé,
    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
     
    Sub Bouton5_Cliquer()
     
    'Déclaration des variables
    Dim Ligfin As Integer
    Dim Colfin As Integer
     
    'Attribution des valeurs
    Ligfin = Range("A1048576").End(xlUp).Row ' ou Ligfin = Cells(Rows.Count, 1).End(xlUp).Row
    Colfin = Range("XFD1").End(xlToLeft).Column ' ou Colfin = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
     
    'Selection des valeurs à partir de cellule A1 feuille 2
    Worksheets("Feuil2").Range(Cells(1, 1), Cells(Ligfin,Colfin)).Select
     
    End Sub
    modif erreur
    Worksheets(Feuil2).Range(Cells(1, 1), Cells(Ligfin,Colfin)).Select
    par
    Worksheets("Feuil2").Range(Cells(1, 1), Cells(Ligfin,Colfin)).Select
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci JP pour ta réponse ! ;-)

    Au final ma boucle ne servait à rien !

    Je reviens vers toi je viens de tester la code correctif que tu m'as donné :

    J'ai une erreur qui revient lors de l’exécution 'erreur 13' sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      'Selection des valeurs à partir de cellule A1 feuille 2
      Worksheets(Feuil2).Range(Cells(1, 1), Cells(Ligfin, Colfin)).Select ' (cf. pièce-jointe).
    J'essaie de trouver une solution et je tiendrai au courant quand ce sera bon.

    Cdlt.


    Aliocha7775
    Images attachées Images attachées  

  4. #4
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Ligfin As Integer Long
    Dim Colfin As Integer Long
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Visiblement j'ai toujours le même type d'erreur au même endroit. :-(

  6. #6
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,

    Worksheets(Feuil2).Range(Cells(1, 1), Cells(Ligfin,Colfin)).Select

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Worksheets("Feuil2").Range(Cells(1, 1), Cells(Ligfin,Colfin)).Select
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour JP,

    Merci pour ta réponse mais j'avais déjà testé avec les guillemets mais ça marchait toujours pas.

    Voici le code qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Bouton2_Cliquer()
     
    'Déclaration des variables
    Dim Ligfin As Long
    Dim Colfin As Long
     
    'Attribution des valeurs
    Ligfin = Range("A1048576").End(xlUp).Row        'ou Ligfin = Cells(Rows.Count, 1).End(xlUp).Row[/COLOR][/COLOR]
    Colfin = Range("XFD1").End(xlToLeft).Column     ' ou Colfin = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
     
    'Sélection des valeurs à partir de cellule A1 feuille 2
    Worksheets("Feuil2").Activate
    Range(Cells(1, 1), Cells(Ligfin, Colfin)).Select
    J'ai rajouté ".Activate" car sans ça ne marchait pas.

    Dernière question pourquoi quand j'affecte la macro à un bouton de commande elle ne marche ?

    Cdlt.

    Aliocha7775

  8. #8
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Sub Bouton2_Cliquer()
    Sub Bouton2_Click()
    il doit y avoir une question d'option FR/EN...

    @+JP

    bonjour,

    dans cette discussion , pijaku a souligné le fait que tu "remplis" Ligfin et Colfin avec une "feuille" et tu travaille dans une autre "feuille"

    code de pijaku
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    With Sheets("Feuil2")
       Ligfin = .Range("A1048576").End(xlUp).Row
       Colfin = .Range("XFD1").End(xlToLeft).Column
    End With
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour sélectionner une liste de données complète et à condition que la première ligne et la première colonne soient remplies, j'utilise la fonction CurrentRegion

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub t()
     Dim rng As Range
     Set rng = ThisWorkbook.Worksheets("Résultats").Range("A1").CurrentRegion
     MsgBox rng.Address(external:=True)
    End Sub
    ou de préférence avec la propriété CodeName de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub t()
     Dim rng As Range
     Set rng = shtData.Range("A1").CurrentRegion
     MsgBox rng.Address(external:=True)
    End Sub
    Maintenant si tu utilises un tableau au sens où excel l'entend (Insertion/Tableau), il faut utiliser la propriété DataBodyRange de l'objet ListObject
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci à vous tous pour vos conseils !!!

    @JP merci à toi et Pijaku : il avait raison c'était bien une histoire d'onglet (la "Feuil2") non renseigné et maintenant tout marche !

    @Phillipe merci pour l'information je le testerais de mon côté pour optimiser ma macro. je sais qu'il faut pas trop utiliser le "select" mais pour le moment j'essaie de comprendre les rouages de VBA.

    Bonne soirée à tous et merci encore une fois !!!

    Cdlt.

    Aliocha7775

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/04/2016, 14h33
  2. Auto install macro vba excel
    Par zootman dans le forum Installation, Déploiement et Sécurité
    Réponses: 6
    Dernier message: 14/06/2006, 21h30
  3. [VBA-E] macro VBA excel suppression graphiques
    Par totoza dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/05/2006, 08h45

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