Ajout d'une ligne

Résolu/Fermé
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023 - 11 oct. 2015 à 21:13
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023 - 4 nov. 2015 à 22:17
Bonjour,

j'ai plusieurs tableaux dans ma feuille de calcul.

J'aimerais pouvoir créer pour chaque tableau un bouton me permettant via une une macro d'ajouter une ligne sur ce tableau en particuliers ?

Merci d'avance pour votre aide !

10 réponses

Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
12 oct. 2015 à 12:06
Bonjour,

Utilisez l'enregistreur de macro. Après on pourra adapter. Mais sans avoir ni colonne, ni ligne, ni rien, difficile de vous sortir une macro comme ça.

Peut-être un exemple de fichier anonymé?

https://www.cjoint.com/

Cordialement.
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023
12 oct. 2015 à 21:21
Bonsoir,

voici le lien vers le document :
http://www.cjoint.com/c/EJmtqSz48oL

Mon but est de pouvoir trouver la dernière ligne du tableau 1, d'ajouter une ligne vierge juste en dessous de cette dernière ligne de ce seul tableau.
De même pour les autres tableaux.

Merci d'avance et bonne soirée !
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
13 oct. 2015 à 08:57
Bonjour,

Le fichier modifié :

https://www.cjoint.com/c/EJng3stixyf

J'ai juste un peu modifié l'organisation. Des tableaux les uns en dessous des autres rendent les choses assez compliquées pour trouver la dernière ligne. Si cela vous dérange vraiment, on peut essayer de changer.

De plus, une ligne est ajoutée au tableau uniquement si la dernière ligne de ce tableau est remplie (au moins la colonne A).

Cordialement.
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023
13 oct. 2015 à 22:05
Bonsoir,

merci pour votre aide mais je ne parviens pas à ouvrir le lien.

Je suis contraint d'avoir ces tableaux les uns en dessous des autres dans le cadre de ce projet.

Je confirme que le besoin d'ajouter une ligne est nécessaire uniquement si la dernière ligne de ce tableau est rempli.

Cordialement.
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
14 oct. 2015 à 09:43
Voici le fichier modifié, j'ai affecté les macros à vos boutons. Cette fois j'ai gardé votre présentation initiale :

https://www.cjoint.com/c/EJohPlEiiFf

Si vous ne parvenez pas à l'ouvrir, allez dans Visual Basic, créez un module et coller le code suivant :

Sub AJOUTER_LIGNE1()

Dim DL As Long

DL = 1
Do While Not IsEmpty(Range("A" & DL))
    DL = DL + 1
Loop

Rows(DL).Insert Shift:=xlDown

Range(Cells(DL, 1), Cells(DL, 2)).Merge

    With Range(Cells(DL, 1), Cells(DL, 4)).Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With

End Sub

Sub AJOUTER_LIGNE2()

Dim DL As Long, DL2 As Long

DL = 1
Do While Not IsEmpty(Range("A" & DL))
    DL = DL + 1
Loop

DL2 = DL + 5
Do While Not IsEmpty(Range("A" & DL2))
    DL2 = DL2 + 1
Loop

Rows(DL2).Insert Shift:=xlDown

Range(Cells(DL2, 1), Cells(DL2, 2)).Merge

    With Range(Cells(DL2, 1), Cells(DL2, 4)).Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With

End Sub

Sub AJOUTER_LIGNE3()

Dim DL As Long

DL = Cells(Application.Rows.Count, 1).End(xlUp).Row

Rows(DL + 1).Insert Shift:=xlDown

Range(Cells(DL + 1, 1), Cells(DL + 1, 2)).Merge

    With Range(Cells(DL + 1, 1), Cells(DL + 1, 4)).Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With

End Sub


Vous n'avez plus qu'à affecter vos macros à vos boutons.

Cordialement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
14 oct. 2015 à 10:20
Bonjour Luke94,
Bonjour Kuartz,

Une autre proposition avec une procédure qui est lancée lorsque l'on effectue un double-clic sur l'en-tête du tableau.

https://www.cjoint.com/c/EJoisxaaYjG

A+
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
16 oct. 2015 à 08:38
Pas de nouvelle... De rien quand même...
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523 > Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019
16 oct. 2015 à 10:05
Remarque bien que Luke94 a dit "Merci d'avance pour votre aide !"
Il savait depuis le début qu'il ne reviendrait pas.
:D

A+
0
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023
16 oct. 2015 à 21:20
Bonsoir,

merci beaucoup pour votre aide et vos messages que je découvre car de retour de mission à l'étranger.

Je viens de tester la solution de Kuartz et elle répond parfaitement à mon besoin. Je verrai maintenant lundi au bureau comment je l'adapte à mon fichier source.

Merci également à Gyrus pour l'envoi de son fichier. En revanche, j'ai plus de mal à comprendre le fonctionnement. Cela fonctionne bien avec le Tableau1 mais pas les autres (du moins, je n'ai pas su le faire fonctionner).

Je vous rassure, ce n'est pas mon genre ne pas remercier les personnes pour le temps qu'elles ont bien voulu consacrer à mon problème.

En vous souhaitant un excellent week end.
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
16 oct. 2015 à 22:39
Bonjour Luke94,

Surtout, ne te formalises pas pour nos petites piques, nous avons pris l'habitude de ne pas recevoir de retour et nous préférons tourner ça à la dérision.

Pour te répondre, il est normal que tu ne vois pas d'effet sur les 2 autres tableaux car la ligne supplémentaire n'est ajoutée que lorsque le tableau est rempli, ce qui n'est la cas que pour le Tableau1.

A+
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
19 oct. 2015 à 09:01
Bonjour,

Nous avons en effet beaucoup l'habitude que les internautes laissent leurs posts mourir dans donner la moindre réponse alors que les gens passent parfois du temps à répondre. Je vous prie de m'excuser pour ma dernière réponse.

Néanmoins, si vous avez besoin d'aide pour adapter le code à votre fichier, n'hésitez pas à me le dire.

Quand votre fichier marchera comme vous voulez, merci de passer le sujet en "résolu".

Cordialement.
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023
19 oct. 2015 à 21:29
Bonsoir,

comme convenu, j'ai testé aujourd'hui le code proposé.

Mon souci est que je dispose de plusieurs tableaux mais certains ne sont pas forcément alignés sur la même colonne. Le code fourni prend en compte le 2nd tableau en indiquent un décalage de 5 lignes mais ce n'est pas forcément le cas et parfois pas sur la même colonne...

Pensez vous qu'il soit possible d'établir un code dans lequel je préciserais le nom du tableau (j'aurai auparavant fourni un nom aux différents tableaux : Tableau1, Tableau2,...).

Merci d'avance pour vos réponses et bonne soirée !

Cordialement.
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
20 oct. 2015 à 08:45
Bonjour,

Sans aucun problème. Si vous nommez vos tableaux, vous pouvez ensuite les utiliser dans votre code de la manière suivante :

Range("le nom du tableau").Columns(4)


Par exemple vous indique la colonne 4 du tableau "le nom du tableau"

Définissez les variables "dernière ligne" ainsi :

DL = Range("le nom du tableau").Rows.Count


Du coup vous pourrez ensuite mettre exactement le même code ainsi :

DL = 1
Do While Not IsEmpty(Range("la colonne" & DL))
    DL = DL + 1
Loop

Rows(DL).Insert Shift:=xlDown

Range("le nom du tableau").Range((Cells(DL, 1), Cells(DL, 2)).Merge

    With Range("le nom du tableau").Range(Cells(DL, 1), Cells(DL, 4)).Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With


Si vous avez besoin d'aide, joignez un fichier exemple avec des noms de tableaux.

Cordialement.
0
Luke94 Messages postés 61 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 13 novembre 2023
4 nov. 2015 à 22:17
Bonsoir,

merci, j'ai pu tester cette dernière macro qui fonctionne parfaitement.

Merci encore et bonne soirée.