Ajout de ligne automatique VBA

Bonjour tout le monde, C'est possible que cette question ait déjà été posée mais je n'ai pas trouvé ailleurs, j'ai bien essayé de bidouiller quelques codes vba trouvé ici et là sur internet mais comme je suis nul avec le vba je n'y arrive pas.

j'ai une liste avec plusieurs catégories qui sera partagé à plusieurs utilisateurs avec des compétences variées en informatique donc je cherche la façon la plus simple pour ajouter une ligne avec inclusion des formules automatiquement lorsque une cellule contient une valeur.

en détail:

si un utilisateur entre du texte en B8 : ajouter une ligne en dessous de la ligne 8 avec les même formats, formules et validations de données que la ligne 8

idem pour les cellules B14, B21, B29, B36, B41, B44, B50, B53

Merci infiniment

Hello,

Le plus simple je pense serait de passer ton tableau en « Tableau structuré » comme ça tes formules suivront automatiquement suite à un ajout de ligne.

Et tu inclus dans ta formule : si ta cellule B quelque chose est vide tu laisses vide sinon tu mets ta formule et le tour est joué :)

Je ne suis pas dispo ce soir donc si jamais une âme charitable te met ça en place c’est top sinon je vois ça demain matin sans faute.

@+

Super merci BAROUTE78 ,

je n'ai jamais vraiment travaillé avec des tableaux structurés mais j'ai vu que ça semble être l'avenue de choix pour plusieurs personnes dans plusieurs cas. La raison pourquoi je n'ai pas poussé la réflexion est que quand j'ai survolé les tutoriaux de tableaux structurés j'ai eu l'impression que ça ne convenais pas vraiment à mon problème.

Cependant vu le fait que tu me le propose ici je vais retourner m'instruire sur le sujet et tenter d'emprunter cette avenue!

Bonsoir,

voici votre fichier modifié en Tableau structuré :

@ bientôt

LouReeD

Merci LouReeD,

Je suis en train de suivre un tuto de tableaux structurés pour voir si ça peut régler mon problème, votre solution est une bonne piste mais j'ai besoin d'avoir une ligne "total" en bas du tableau qui s'ajuste avec l'entrée de nouvelles lignes donc pas possible d'utiliser la dernière ligne pour entrer des données.

Hello,

On peut utiliser une ligne qui fasse la somme hors du tableau et pour rajouter une ligne au tableau il faut faire « insérer une ligne » comme ça on garde la somme hors du tableau mais elle se mettra à jour à chaque entrée :)

@+

Edit : je viens de voir que le tableau de LouReeD faisait déjà le total

Merci pour la réponse, je veux éviter d'avoir à cliquer sur insérer ue ligne pour éviter qu'un néophyte mal averti le fasse mal (voir ne sache pas comment faire) je veux que tout soit automatisé! Autre détail important c'est que chaque secteur (il y en a 9 dans la colonne A) doit ajouter une ligne automatiquement en bas du secteur et non en bas du tableau.

exemple: dans un tableau structuré "$A$3:$S$54" si j'entre une nouvelle sous-catégorie en B8 (secteur: "Item de bureau"(colonne A) / nouvelle sous-catégorie (colonne B) la nouvelle ligne devra s'ajouter en ligne 9 (dernière ligne de la catégorie "items de bureau") et non en ligne 54 qui serait le bas du tableau.

idem pour chaque catégories du tableau (lignes:14, 21, 29, 36, 41, 44, 50 et 53)

bonjour Omelindai, Baroute78, LouReeD,

Si vous faites un "DoubleClick" dans une des cellules "B", VBA va insérer une ligne en dessous cette cellule dans le même catégorie.

très intéressant BsAlv Merci, si jamais je n'arrive pas à trouver d'autres solutions ça sera fort probablement ma solution de rechange mais j'aimerais vraiment que ce qui active le code est une nouvelle entrée de texte dans les cellules en "B".

aussi je ne sais pas encore si je vais travailler en tableau structurés ou pas, si je ne le fais pas, j'aimerais bien que les catégorie (colonne "A") demeure fusionnée lors de l'ajout (ce qui n'est évidement pas possible en tableau structurés).

Je ne serais pas si exigeant si c'était seulement pour moi mais je fais le fichier pour une personne tierce qui va l'envoyer à des centaines de clients.

Merci encore!

Bonjour

Ma ligne de totaux je l'ai mis au dessus du tableau comme cela ajout simple et toujours visible mais a priori pas assez !

@ bientôt

LouReeD

re,

la ligne ajoutée est une copie de la ligne sur laquelle vous avez fait le DoubleClick, mais sans les textes, seulement les formules ne sont pas supprimées. Clicquez sur "recouvrement" et vous verrez que les chiffres et les textes seront disparus mais la cellule rouge n'est pas un texte mais une formule parce qu'elle commence avec un "=" !!!

"Des centaines de clients", il y aura toujours quelques personnes qui auront des doutes concernant les macros ...

Sinon peut-être que quelqu'un serait en capacité de bidouiller ce code trouvé sur un autre forum??? :

Il semble bien marcher dans son fichier d'origine mais pas dans mon fichier d'adoption.

Le fichier d'origine que je met en pièce jointe n'est pas de moi mais reproduit assez bien ce que je recherche sauf que je n'arrive pas à le faire fonctionner dans le mien.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Application.ScreenUpdating = False 'Désactive la mise à jour de l'écran
    'Application.EnableEvents = True 'Désactive la gestion des évènements
    If Range("A1").Value = "Comptabilisation d'achats respponsables" And Target.Row > 35 And (Target.Column = 2 Or Target.Column = 3 Or Target.Column = 5) Then   'La procédure s'exécute que si : la feuille est intitulée" Comptabilisation d'achats respponsables" et si une seule cellule est modifiée dans la colonne B, C ou E à partir de la ligne 35.
        CelluleActive = ActiveCell.Address 'Mémorise l'adresse de la cellule sélectionnée
        DerniereLigneTableau = Range("G3").End(xlDown).Row 'Détermine la dernière ligne du tableau
        If Cells(Target.Row, Target.Column).Value = "" Then 'Si la valeur d'une cellule est effacée en B, C ou E, la macro ne s'exécute pas
            Exit Sub
        ElseIf DerniereLigneTableau - Target.Row = 2 Then 'Si l'avant-dernière ligne est complétée :
            Range("A" & Target.Row + 1 & ":L" & Target.Row + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'insère une ligne
            Range("A" & Target.Row + 2 & ":L" & Target.Row + 2).Copy 'copie la dernière ligne du tableau
            Range("A" & Target.Row + 1 & ":L" & Target.Row + 1).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'colle les formules dans les cellules insérées
            Range("A" & Target.Row + 1).Value = Range("A" & Target.Row) + 1 'affecte le numéro d'opération dans la cellule A
            For i = Target.Row + 1 To DerniereLigneTableau 'Rétablit la hauteur des lignes à 37.5
                Rows(i).RowHeight = 37.5
            Next
        End If
        Range(CelluleActive).Select 'Resélectionne la cellule avant l'insertion
        Application.CutCopyMode = False 'Désactive le mode copy
    End If
    'Application.EnableEvents = True 'Réactive la gestion des évènements
End Sub

Merci BsAlv, oui j'y ai bien pensé qu'il y aurait des gens qui seront sceptiques avec les macro, dans le pire des cas si ils n'acceptent pas les macro où si ils ne sont pas en mesure de les ouvrir le fichier marcheras seulement ils devront faire les manip à la main. on ne peut pas plaire à tout le monde eh!

Merci LouReed, je sais je suis difficile, s'il te plait ne sort pas le goudron et les plumes, j'apprécie vraiment ta contribution

Rechercher des sujets similaires à "ajout ligne automatique vba"