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 :

Détection des dernières lignes de tableaux pour en copier les valeurs


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 39
    Par défaut Détection des dernières lignes de tableaux pour en copier les valeurs
    Bonjour!

    Je suis actuellement sur un problème que je n'arrive pas à résoudre...
    Je voudrais (dans 3 tableaux différents) aller chercher la dernière ligne (qui est variable) afin de copier les valeurs.
    Je ne peux malheureusement pas utiliser les formules suivantes car les tableaux sont les uns sous les autres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim DernLigne As Long
    DernLigne = Range("A" & Rows.Count).End(xlUp).Row
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("A65536").End(xlUp).Offset(1, 0).Select
    J'ai joint une capture d'écran et un fichier excel pour que vous comprenniez mon problème.
    Merci d'avance de votre aide !

    PS: Ce sont les valeurs oranges qui sont à récuperer

    test.xlsmNom : Capture.PNG
Affichages : 280
Taille : 20,0 Ko

  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
    Par défaut
    bonjour,
    teste intérieur de la cellule --> pas couleur --> pas tableau

    dans le même esprit,
    si couleur bleu ---> tableau n1
    si couleur rouge --> tableau n2

    @+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
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    la formule étant déjà correcte pour la dernière ligne du dernier tableau, non ?

    Sinon pour les autres tableaux, s'intéresser déjà à la propriété CurrentRegion
    ou encore juste en simulant la séquence de touche Ctrl + via la méthode End(xlDown)

    Et puis avec un peu de jugeote juste avec le B-A-BA d'Excel, à savoir nommer chaque plage des tableaux
    ou encore convertir ces plages en vrais tableaux (cf aide d'Excel et ListObject en VBA),
    il est alors aisé de trouver la dernière ligne de chacun !

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 39
    Par défaut
    Merci de votre aide !
    Ceci pourrait marcher pour définir un nom à chaque tableau ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    With Sheets("Tabelle1")
      .ListObjects.Add(xlSrcRange, .Range("$A$2:$P$10"), xlNo).Name = _
               "Tableau1"
    End With

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Oui pour une création d'un vrai tableau mais c'est inutile de l'effectuer à chaque fois par code
    mais juste le paramétrer directement depuis Excel !

    Pour la dernière ligne, par exemple depuis la propriété HeaderRowRange d'un ListObject combinée à la propriété End(xlDown)

  6. #6
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour à tous
    Proposition d'un débutant : tu peux faire le test si la ligne non vide et le ligne après et vide tu copie les cellule souhaité
    comme ça (ici c'est copier dans ta feuille n° 2 :
    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
    Sub Bouton1_Cliquer()
    ' nétoyer feuille 2
    With Sheets("Tabelle2")
    .Select
    Selection.ClearContents
    End With
    'copier
     
    Dim i As Long
    Dim k As Integer
    k = 1
    With Sheets("Tabelle1")
    i = .Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To i
    If .Cells(i, 1) <> "" And .Cells(i + 1, 1) = "" Then
        Sheets("Tabelle2").Range("A" & k) = .Cells(i, 1)
        Sheets("Tabelle2").Range("B" & k) = .Cells(i, 2)
        ' continuer à copier c et d et e .....
        k = k + 1
        End If
    Next i
    End With
    End Sub

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour BENNASR !

    En utilisant juste la propriété End(xlDown) comme manuellement Ctrl +
    il faut moins de dix lignes de code pour trouver les trois dernières lignes utilisées dans chaque plage …

    D'autres encore penseront à utiliser la propriété Areas sur SpecialCells

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 04/05/2017, 14h03
  2. Réponses: 5
    Dernier message: 28/08/2014, 11h48
  3. Réponses: 9
    Dernier message: 13/10/2011, 11h27
  4. [MySQL] sélection des dernières lignes avec affichage aléatoire
    Par nabmoah dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/08/2008, 23h57
  5. [MySQL] Sélection des dernières lignes d'une table
    Par Civet dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/04/2007, 15h06

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