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 :

VBA - Ajouter une ligne dans un tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Assistante gestion et syndic
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Assistante gestion et syndic

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Par défaut VBA - Ajouter une ligne dans un tableau
    Bonjour à tous,

    Je débute en VBA et developpez.net m'a été très utile. Malgré plusieurs recherches, je n'arrive pas à trouver de réponse à ma question.

    Je m'explique :
    Je cherche à créer un tableau pour indiquer, à chaque nouvelle location réalisée, le montant d'honoraire perçu et la remise éventuelle effectuée.

    J'ai donc crée un tableau, ainsi qu'un module VBA qui affiche des inputbox successives demandant de saisir les informations, pour qu'elles soient ensuite incrémentées dans le tableau

    Mes inputbox apparaissent sans soucis, mais je n'arrive pas à :
    - trouver la ligne de code à indiquer au début de la procédure, afin d'ajouter une nouvelle ligne (à la limite, peu m'importe où, puisque j'ai prévu d'insérer à la toute fin de ma procédure un tri automatique du tableau en fonction de l'ordre chronologique de la réalisation effective de la location)
    - faire que les information saisies dans les input box soient incrémentées dans cette nouvelle ligne.

    J'ai essayé plusieurs solutions, à savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Sheets("Locations")
        Derlig = .Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row.Range(Cells(Derlig, 2), .Cells(Derlig, 12)).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
     
    End With
    (en ayant préalablement défini Derlig As Long, mais cela ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A65536").End(xlUp).Row + 1
    , sans effet non plus.

    En espérant avoir été assez claire, et en vous remerciant par avance pour les pistes que vous pourrez me donner.

    Valoou.

    PS : je n'ai pas mis de classeur en pièce jointe, puisque la discussion concernant les fichiers joints indique qu'il est préférable de ne pas mettre de classeur joint au premier message.

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Petite question avant de te répondre :

    tu cites ce code
    Citation Envoyé par Valoou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A65536").End(xlUp).Row + 1
    je voudrais savoir si tu travailles avec Excel 2003 ou des fichiers .xls ?

    En effet 65536 est la limite des lignes sur le fichiers .xls et Excel 2003. A partir de la version 2007 les fichiers Excel ont une extension .xlsx ou .xlsm (macros incluses) ont une limite bien plus grande ~ 1 million de ligne (1 048 576) d' où ma question.

    certaines fonctionnalités sous Excel sont très pratique comme Tableau (Ruban : Insertion - Groupe : Tableaux - Icone : Tableau)

    Ce tableau permet d'ajouter automatiquement une ligne en fin de liste avec toutes les formules etc...

    très très pratique et je pense que tu pourrais l'utiliser pour résoudre tes problèmes

    sinon pour aller à la dernière ligne tu as plusieurs solutions.

    en voici 3. Tu remarqueras que certaines sont très proche de ce que tu as fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Test_Derlign1()
        Dim Der_Lign As Long
        Der_Lign = ActiveCell.End(xlDown).Row
        MsgBox Der_Lign
     
    End Sub
    Celle- ci a l'avantage de s'arrêter à la première ligne blanche (même s'il y a des information plus loin) ce qui d'ailleurs peut être aussi un inconvenient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Test_Derlign1_bis()
        Dim Der_Lign As Long
        Der_Lign = [A1048576].End(xlUp).Row
        MsgBox Der_Lign
    
    End Sub
    Donc pas de parenthèses mais des Crochets en se positionnant sur la dernière ligne on remonte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub Test_Derlign2()
        Dim NomF As String
        Dim Der_Lign As Long
     
        NomF = "Feuil1"
        Der_Lign = ThisWorkbook.Worksheets(NomF).UsedRange.Rows.Count
        MsgBox Der_Lign
     
    End Sub
    celle-ci te donne la derligne où il y a une info dans toute la feuille où que l'on soit

    Voili, Voilà, Valoou

    à bientôt

  3. #3
    Candidat au Club
    Femme Profil pro
    Assistante gestion et syndic
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Assistante gestion et syndic

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Par défaut
    Merci Igloobel pour tes réponses !

    Pour répondre à ta question, j'utilise Excel 2016 et mon fichier est en .xlsm.

    Frustrant de ne pas avoir trouvé la solution, mais plaisant de voir que je n'était pas loin...

    J'ai donc modifié mon code comme tel (en ayant bien défini la variable Dern_Lign As Long) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Der_Lign = [A1048576].End(xlUp).Row
        Selection.ListObject.ListRows.Add (1)
    Ça aurait du me rajouter une ligne au dessus de la dernière ligne avec du texte (si j'ai tout bien suivi), mais cela ne marche pas et m'indique "Erreur d’exécution, Variable objet ou variable de bloc With non définie"

    J'ai aussi essayé sans que cela marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Der_Lign = [A1048576].End(xlUp).Row.Insert
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Der_Lign = [A1048576].End(xlUp).Row.Insert Shift :=xlUp
    J'arrive donc bien a définir la dernière ligne (quand je demande au programme une MsgBox, il me donne le bon n° de ligne), mais je n'arrive pas à insérer une ligne au dessus...

    La solution se trouve peut être dans ce que tu m'a indiqué, mais j'avoue ne pas avoir compris...

    Citation Envoyé par Igloobel Voir le message
    certaines fonctionnalités sous Excel sont très pratique comme Tableau (Ruban : Insertion - Groupe : Tableaux - Icone : Tableau)

    Ce tableau permet d'ajouter automatiquement une ligne en fin de liste avec toutes les formules etc...

    très très pratique et je pense que tu pourrais l'utiliser pour résoudre tes problèmes

  4. #4
    Candidat au Club
    Femme Profil pro
    Assistante gestion et syndic
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Assistante gestion et syndic

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Par défaut
    Bonjour, bonjour !

    J'ai réussi à résoudre une partie de mon problème, avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Der_Lign = [A1048576].End(xlUp).Row
        Rows(Der_Lign).Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    J'arrive donc à insérer une nouvelle ligne au dessus de la dernière vide ! Yes !

    Bon, ma joie fut de courte durée : je n'arrive pas à faire que le résultat de l'inputbox qui s'affiche après soit automatiquement incrémenté dans cette ligne, dans la colonne correspondante (ex : locataire dans la colonne A, puis nouvelle input box avec le propriétaire, dans la colonne B, etc.)...

    Valoou

Discussions similaires

  1. ajouter une ligne dans un tableau et afficher la valeur d'une variable
    Par dede94 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/05/2010, 17h24
  2. Ajouter une ligne dans un tableau
    Par kenru dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/10/2009, 16h10
  3. Réponses: 1
    Dernier message: 12/12/2008, 17h06
  4. Réponses: 9
    Dernier message: 15/06/2008, 11h13
  5. [vb6] Ajouter une ligne dans un tableau excel
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 13/06/2006, 16h41

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