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 :

Ajouter/supprimer ligne à partir de la dernière ligne d'une plage


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 35
    Points
    35
    Par défaut Ajouter/supprimer ligne à partir de la dernière ligne d'une plage
    Bonjour

    Je suis en train de bosser sur un fichier Excel dans lequel un tableau de données est représenté. Je l'ai renommé "data" et j'aimerais maintenant créer 2 macros simples afin d'y ajouter ou d'y supprimer une ligne.

    En faisant une macro enregistrée, je me positionnais sur la dernière ligne du tableau et je faisais clic droit, insertion. Le problème, c'est qu'en faisant comme ça, dés que je cliquerai sur le bouton de cette macro, il va à chaque fois ajouter la ligne à partir de la ligne que j'ai sélectionné lors de la création de ma macro.

    Je souhaiterais donc savoir comment demander à Excel qu'il se positionne à chaque fois sur la dernière ligne de ma plage "data" quel que soit le nombre de lignes dans le tableau ?

    Je vous en remercie d'avance

  2. #2
    Membre averti Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Points : 391
    Points
    391
    Par défaut re
    tu peux faire un check d une colonne et supprimmer toutes les lignes vides ou les masquer

    Pour masquer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
    Dim i As Integer
     For i =  1 to 240 'debut de ta cellute a ta derniere cellule 
        If ActiveSheet.Range("Q" & i).Text = "" Then
           Rows(i).Hidden = True
       End If
     Next i
    End Sub
    sinon pour supprimmer tu remplace hidden par delete et t enleve true
    tom

    "Barbar : The rest of the warrior"

    Into the wild....

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 35
    Points
    35
    Par défaut
    Merci pour ta réponse.

    Cependant, le but n'est pas de vider ou de masquer les lignes vides mais simplement de me positionner toujours sur la dernière ligne de mon tableau (nommé "data") puis d'y faire un simple ajout de ligne.

  4. #4
    Membre averti Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Points : 391
    Points
    391
    Par défaut re
    je lis a chaque fois en diagonale...

    ta derniere ligne de ton tableau est elle vide ?

    deja pour ajouter une ligne le code est :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.EntireRow.Insert
    tom

    "Barbar : The rest of the warrior"

    Into the wild....

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 35
    Points
    35
    Par défaut
    Elle sera toujours vide au moment de l'ajout d'une ligne.

    Pour la suppression également. La seule nuance, c'est qu'à la suppression d'une ligne (la dernière de ma plage de données "data"), il faudra ajouter une bordure en bas de ma plage de données vu que la suppression de la dernière ligne de ma plage supprime également la bordure du bas de mon tableau.

  6. #6
    Membre averti Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Points : 391
    Points
    391
    Par défaut re
    pour selectionner la derniere ligne y a un code du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range ("...").End(xlup).row.select
    Mais je me souviens plus exactement et je cherche mais je retrouve pas ...
    tom

    "Barbar : The rest of the warrior"

    Into the wild....

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 35
    Points
    35
    Par défaut
    J'ai testé ça sur un ptit tableau d'exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("data").End(xlUp).Select
    Selection.EntireRow.Insert
    Ca m'ajoute une ligne mais complètement en haut de la feuille, sur la ligne 1 alors que mon tableau commence ligne 19....

  8. #8
    Membre averti Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Points : 391
    Points
    391
    Par défaut re
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("data").End(xldown).Select
    Selection.EntireRow.Insert

    mais je ne suis pas sure du tt
    tom

    "Barbar : The rest of the warrior"

    Into the wild....

  9. #9
    Membre averti
    Inscrit en
    Février 2008
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 267
    Points : 306
    Points
    306
    Par défaut
    Bonjour,

    Si "data" se trouve dans la colonne A par exemple, tu peux faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Range("A65536").End(xlUp).EntireRow.Insert
    Amicalement

    Dan

  10. #10
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 35
    Points
    35
    Par défaut
    Dans mon fichier test, mon tableau s'étend de C19 à E28.

  11. #11
    Membre averti
    Inscrit en
    Février 2008
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 267
    Points : 306
    Points
    306
    Par défaut
    re,

    Si la dernière ligne est la 28, remplace A par C dans mon code.

    Amicalement

    Dan

  12. #12
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 35
    Points
    35
    Par défaut
    Même résultat, ça ajoute la ligne en haut de ma feuille et pas en bas de mon tableau

  13. #13
    Membre averti Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Points : 391
    Points
    391
    Par défaut re
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("...").Range("..").End(xlDown).Select
    sa marche chez moi
    tom

    "Barbar : The rest of the warrior"

    Into the wild....

  14. #14
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 35
    Points
    35
    Par défaut
    Je te joins mon petit fichier test.

    Regarde la macro du bouton 1 s'il te plait
    Fichiers attachés Fichiers attachés

  15. #15
    Membre averti Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Points : 391
    Points
    391
    tom

    "Barbar : The rest of the warrior"

    Into the wild....

  16. #16
    Membre averti
    Inscrit en
    Février 2008
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 267
    Points : 306
    Points
    306
    Par défaut
    re,

    Utilise ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Sub ajouter()
    Dim derlig As Integer
    derlig = Range("c65536").End(xlUp).Row + 1
    Worksheets("Feuil1").Range("c" & derlig).EntireRow.Insert
    End Sub
    Veille à mettre des données dans ta colonne C

    A te relire

    Dan

  17. #17
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 35
    Points
    35
    Par défaut
    Très bien ça marche rien qu'en mettant un chiffre en C19 uniquement.

    Comment pourrais-je inclure une sécurité pour cette macro, à savoir qu'elle ne pourrait se déclencher que si la colonne C n'est pas vide ? (avec un petit message d'erreur si tentative avec tableau vide)

    Aussi, pour supprimer une ligne en bas de ma plage, tout en gardant la ligne de bordure basse, comment faire ? Je vais tester.

    Merci

  18. #18
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 35
    Points
    35
    Par défaut
    Bon, pour la ligne c'est bon

    Reste à savoir pour l'alerte de sécurité comme demandé juste au-dessus

  19. #19
    Membre averti
    Inscrit en
    Février 2008
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 267
    Points : 306
    Points
    306
    Par défaut
    re,

    Juste en dessous de "Dim derlig as...." ajoute cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsEmpty(Range("C19")) Then MsgBox "veuillez mettre une valeur en cellule C19"
    .

    Cele te donne un contrôle sur la cellule C19 qui devra comporter une valeur.

    Cdrlt

    Dan

  20. #20
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 35
    Points
    35
    Par défaut
    Alors 2 choses.

    1. Comment ne pas restreindre cette règle à la cellule C19 mais à l'une des cellules de la colonne C du tableau (nimporte laquelle sauf la dernière ligne qui doit rester vide elle) ?

    2. Pour ma suppression de ligne, j'ai mis ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub supprimer()
        Dim derlig As Integer
        derlig = Range("c65536").End(xlUp).Row + 1
        Worksheets("Feuil1").Range("c" & derlig).EntireRow.Delete Shift:=xlUp
    End Sub
    Ca pose aucun problème avec la bordure noire du bas tant qu'il ne reste pas qu'une seule ligne vide en bas du tableau. Dés qu'il ne reste plus qu'une ligne de vide en bas du tableau, ça me supprime la ligne + la bordure. Du coup, j'aimerais bloquer la suppression de la ligne s'il ne reste qu'une ligne vide en bas du tableau. Comment faire ?

    Merci pour tout en tout cas

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/04/2012, 09h27
  2. Générer des lignes à partir de 2 autres lignes
    Par laloune dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 30/03/2012, 17h11
  3. Réponses: 4
    Dernier message: 22/02/2012, 14h10
  4. [XL-2000] Copier données à partir de la dernière ligne remplie
    Par chouki60 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/07/2011, 17h45
  5. [VBS-Excel] Ecrire à partir de la dernière ligne
    Par ESVBA dans le forum VBScript
    Réponses: 11
    Dernier message: 06/07/2011, 20h47

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