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 :

Inserer X lignes si cellule contient X


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inserer X lignes si cellule contient X
    Bonjour à tous,

    Je souhaite Ajouter/supprimer des lignes en rapport avec le numéro afficher dans une liste contenant 5 chiffres (de 1 à 5). La ligne 1 est toujours présente par défaut donc l'ajout/suppression interviendrait qu'a partir du numéro 2 jusqu'au 5.

    A l'insertion je voudrais donc que l'insert/suppression agisse après la première ligne de donnée et qu'il ajoute/supprime a partir du bas...

    L'image ci jointe vous aidera à comprendre.

    Merci à tous par avance


  2. #2
    Rédacteur

    Bonjour,
    Solution avec les données organisées en tableau structuré nommé T_Participant et une cellule nommée NumberOfParticipants (en jaune) contenant la liste déroulante comme illustré ci-dessous

    La cellule de la première colonne, contient la formule (="Participants " & LIGNE() - LIGNE(T_Participant[#Tout])





    Code de la procédure à placer dans le module de la feuille où se trouve les données
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
      Dim oList As ListObject
      Dim rng As Range
      Dim r As Long
      Set rng = Range("NumberOfParticipants")
      If Target.Address = rng.Address Then
         Set oList = Me.ListObjects(1)
         With oList
           If rng.Value > .DataBodyRange.Rows.Count Then
              For r = .DataBodyRange.Rows.Count To rng.Value - 1
              .ListRows.Add
              Next
            Else
              With .DataBodyRange
               For r = .Rows.Count To rng.Value + 1 Step -1
               .Rows(r).Delete
               Next
              End With
           End If
          End With
      End If
      Set oList = Nothing: Set rng = Nothing
    End Sub
    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
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  3. #3
    Candidat au Club
    Cela ne fonctionne pas plus...

  4. #4
    Rédacteur

    Bonjour,
    Cela ne fonctionne pas plus...
    Cela m'étonnerait car je teste tout les codes que je publie.
    Peux-tu préciser ce qui ne fonctionne pas ?
    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
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  5. #5
    Candidat au Club
    Voila ce que j'obtient, la formule n'est pas valide...

  6. #6
    Rédacteur

    Bonjour,
    C'est normal, ton tableau n'est sans doute pas un tableau structuré et/ou tu ne l'as pas renommé T_Participant
    As-tu lu la première phrase de ma réponse ?
    Solution avec les données organisées en tableau structuré nommé T_Participant et une cellule nommée NumberOfParticipants (en jaune) contenant la liste déroulante comme illustré ci-dessous
    A lire le tutoriel de Pierre Fauconnier Apprendre à utiliser les tableaux structurés Excel : création, manipulations et avantages(1)
    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
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  7. #7
    Candidat au Club
    Effectivement je ne connaissais pas les tableaux structurés.
    Je n'arrive cependant pas à faire fonctionner l'ensemble, notamment la cellule NumberOfParticipant.

  8. #8
    Rédacteur

    Bonjour,
    Je n'arrive cependant pas à faire fonctionner l'ensemble, notamment la cellule NumberOfParticipant.
    Tout simplement parce-que tu ne sais pas non plus, ce que c'est qu'un cellule ou une plage nommée.

    Je te conseille la lecture de billet titré Comment simplifier la lecture d’une formule dans excel en nommant les cellules

    Illustration du nom à donner à la cellule qui doit contenir le nombre de lignes et la liste déroulante

    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
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  9. #9
    Candidat au Club
    Merci énormément pour ton aide ! Tout fonctionne parfaitement.
    Cela m'ôte une épine du pied !!!