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 :

Insertion de lignes à la fin de plusieurs tableaux


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Avril 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2021
    Messages : 1
    Par défaut Insertion de lignes à la fin de plusieurs tableaux
    Bonjour,

    Je me permets de vous contacter car je travaille actuellement sur l’élaboration d’un document ayant pour but de recueillir des informations auprès de plusieurs partenaires. Je souhaiterai laisser la possibilité aux utilisateurs du fichier de créer une ou plusieurs lignes à la fin du ou des tableaux en cliquant sur l’icône « + ». Disons que je suis parvenu à rédiger un code me permettant de réaliser cette opération en stockant les numéros des dernières lignes de chacun des tableaux dans des cellules que seront masquées. Cependant, je trouve que l'opération est plutôt fastidieuse lors de la rédaction du code, notamment lorsque je supprime une ligne. En effet, je dois corriger les numéros de lignes stockées... Ma question est la suivant, est-ce envisageable de rendre cette opération moins fastidieuse ? En prenant en compte les titres des tableaux ou la couleur des cellules ?

    Vous trouverez-ci dessous mon code, ainsi que le fichier ci-joint.

    En vous remerciant par avance pour votre aide

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub InsertLigneachats()
    ActiveSheet.Unprotect "test"
    numligneachat = Range("A1").Value
    numligneservice = Range("A2").Value
    numligneautres = Range("A3").Value
     
    Range("A" & numligneachat).Select
    ActiveCell.EntireRow.Insert
    Range("C" & numligneachat & ":" & "G" & numligneachat).Value = Range("C" & numligneachat + 1 & ":" & "G" & numligneachat + 1).Value
    Range("C" & numligneachat + 1 & ":" & "G" & numligneachat + 1).Value = ""
    Range("H" & numligneachat).FormulaLocal = "=SOMME(E" & numligneachat & ":G" & numligneachat & ")"
    Range("A1").Value = numligneachat + 1
    Range("A2").Value = numligneservice + 1
    Range("A3").Value = numligneautres + 1
     
    ActiveSheet.Protect "test"
    End Sub
     
    Sub InsertLigneservices()
    ActiveSheet.Unprotect "test"
    numligneservice = Range("A2").Value
    numligneautres = Range("A3").Value
     
    Range("A" & numligneservice).Select
    ActiveCell.EntireRow.Insert
    Range("C" & numligneservice & ":" & "G" & numligneservice).Value = Range("C" & numligneservice + 1 & ":" & "G" & numligneservice + 1).Value
    Range("C" & numligneservice + 1 & ":" & "G" & numligneservice + 1).Value = ""
    Range("H" & numligneservice).FormulaLocal = "=SOMME(E" & numligneservice & ":G" & numligneservice & ")"
    Range("A2").Value = numligneservice + 1
    Range("A3").Value = numligneautres + 1
    ActiveSheet.Protect "test"
    End Sub
     
    Sub InsertLigneautres()
    ActiveSheet.Unprotect "test"
    numligneautres = Range("A3").Value
     
    Range("A" & numligneautres).Select
    ActiveCell.EntireRow.Insert
    Range("C" & numligneautres & ":" & "G" & numligneautres).Value = Range("C" & numligneautres + 1 & ":" & "G" & numligneautres + 1).Value
    Range("C" & numligneautres + 1 & ":" & "G" & numligneautres + 1).Value = ""
    Range("H" & numligneautres).FormulaLocal = "=SOMME(E" & numligneautres & ":G" & numligneautres & ")"
    Range("A3").Value = numligneautres + 1
    ActiveSheet.Unprotect "test"
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Eliot, Bonjour au Forum,

    Bienvenue, Eliot, sur ce Forum,

    Ma question est la suivant, est-ce envisageable de rendre cette opération moins fastidieuse
    La réponse est "Oui"

    Par quel moyen?

    La gestion d'une table de données (tableau structuré)
    Ceci en sachant qu'un enregistrement peut être ajouté en fin de base (par défaut) mais aussi à une place définie, autrement dit inséré.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Option Explicit
     
    Sub essai()
    Range("Tableau1").ListObject.ListRows.Add Position:=1, AlwaysInsert:=True
    End Sub
    Ici, la position, d'après ta demande, pourrait être variable.

    Un conseil:
    1 Table de données par feuille, celui-ci, unique, pouvant être appelé soit directement, comme ci-dessus, soit comme membre d'une collection ListObjects rattachée à une feuille parent.

    Pour aller plus loin, cette table de données pourrait être alimentée par formulaire.

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Par hasard, j'ai aperçu ce billet qui pourrait être d'une certaine utilité

Discussions similaires

  1. [XL-2007] Insertion automatique de ligne dans plusieurs tableaux
    Par chaibmax dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/04/2011, 15h33
  2. suppression de plusieurs ligne en fin de fichier
    Par jeanpaul702 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/01/2008, 10h11
  3. [Tableaux] plusieurs tableaux sur une même ligne
    Par zugolin dans le forum Langage
    Réponses: 6
    Dernier message: 12/01/2008, 23h29
  4. Afficher plusieurs tableaux sur une seule ligne
    Par kromartien dans le forum Mise en forme
    Réponses: 3
    Dernier message: 18/11/2007, 15h12
  5. [Tableaux] Insertion dynamique ligne dans un tableau
    Par masseur dans le forum Langage
    Réponses: 12
    Dernier message: 28/03/2006, 14h53

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