Macro ajouter des lignes en bas de page etc..

  • Initiateur de la discussion Initiateur de la discussion Jérémy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

Jérémy

Guest
Bonjour à tous et à toutes!
J'ai un petit problème, je souhaite que la petite application que je suis en train de faire tienne la route, pour ce faire j'ai besoin de faire des boutons ajouter des lignes, supprimer des lignes etc..
J'ai bien regardé vu un exemple sur le forum mais je le comprends pas :-(

Donc j'en suis à la macro "ajouter des lignes" en ce moment (qui doit ajouter des lignes en bas), sois:

Sub Ajout_3lignes()


Application.Goto Reference:="Référence_tableau"
Selection.Insert Shift:=x1Down
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Rows("35:35").Copy
Rows("32:34").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub


Comme vous l'avez compris, j'ai un soucis avec la copie de formules qui est figée, il faudrait qu'elle agisse logiquement sur les nouvelles lignes insérées.

De plus, je suis pas du tout persuadé que ce soit la façon la plus rapide de procéder...enfin bon si vous avez une idée Ô XLDnautes, je suis à l'écoute!
^^
 
Re : Macro ajouter des lignes en bas de page etc..

Salut Jérémy,

Avec le code suivant ca devrait faire ce que tu souhaites :
PHP:
Sub Ajout_3lignes()
Application.Goto Reference:="Référence_tableau"
Rows(Range("A65536").End(xlUp).Row & ":" & Range("A65536").End(xlUp).Row + 2).Insert Shift:=xlDown
Rows(Range("A65536").End(xlUp).Row).Copy
Rows(Range("A65536").End(xlUp).Row - 3 & ":" & Range("A65536").End(xlUp).Row - 1).PasteSpecial Paste:=xlPasteFormulas
Application.CutCopyMode = False
End Sub

@+
 
Re : Macro ajuster le nombre de ligne

Bon, allez encore une question à ce propos...
J'aimerais que dans une seconde feuille, le nombre de ligne soit égale à trois fois celui des articles de la première feuille (il y a trois procédés par articles) avec une référence qui s'appelle cette fois-ci une référence qui comporte 3 lignes:

Private Sub Worksheet_Activate()


For i = 16 <=début de la liste à la première feuille To Sheets("Comparer des Matériaux").Range("B65536").End(xlUp).Row jusqu'au nombre de ligne de la première feuille
Application.Goto Reference:="Référence_procédé"
Rows(Range("D65536").End(xlUp).Row & ":" & Range("D65536").End(xlUp).Row + 2).Insert Shift:=xlDown
Rows(Range("D65536").End(xlUp).Row & ":" & Range("D65536").End(xlUp).Row - 2).Copy
Rows(Range("D65536").End(xlUp).Row & ":" & Range("D65536").End(xlUp).Row + 2).PasteSpecial Paste:=xlPasteFormulas
Application.CutCopyMode = False

Next i
End Sub

Ca donne un ajout de ligne permanent sans formule copiée.
Voilà i need your help please ^^
 
Re : Macro ajouter des lignes en bas de page etc..

re,

Sorry mais je ne comprends pas tres bien ce que tu souhaites. Est-ce que tu pourrais mettre un exemple en pièce jointe avec tes données de départ et ce que tu souhaites obtenir par la suite.

@+
 
Re : Macro ajuster le nombre de ligne

Salut
Jérémy à dit:
Private Sub Worksheet_Activate()
..................
End Sub
Chaque fois que tu entres dans ta feuille, tu lances ta macro. Pas sûr que ce soit ce que tu veuilles faire.
Même si c'est le cas, dans un premier temps, crées-toi une macro qui ne s'execute que quand tu le veux. Une fois qu'elle fonctionne, tu peux voir comment la lancer.
ta macro :
For i = 16 To Range("B65536").End(xlUp).Row
Application.Goto Reference:="Référence_procédé"je vais à la plage nommée "Référence_procédé" ?
Rows(Range("D65536").End(xlUp).Row & ":" & Range("D65536").End(xlUp).Row + 2).Insert Shift:=xlDownj'inserres 3 lignes avant la dernière ligne remplie en colonne D
Rows(Range("D65536").End(xlUp).Row & ":" & Range("D65536").End(xlUp).Row - 2).Copy je copie la la dernière+2 des 3 que je viens d'inserrer
Rows(Range("D65536").End(xlUp).Row & ":" & Range("D65536").End(xlUp).Row + 2).PasteSpecial Paste:=xlPasteFormulas
Application.CutCopyMode = False
????
Next i fin de la boucle
t'as décalé ta dernière ligne vers le bas de 5×(dernière ligne-16)

Tu peux essayer :
PHP:
Sub Macro1()
Dim X As Long
Application.CutCopyMode = False
For X = Range("D65536").End(xlUp).Row To 16 Step -1
Rows(X).Copy
Rows(X & ":" & (X + 1)).Insert Shift:=xlDown
Next X
End Sub

essaies dans un classeur neuf où tu mets 5 lignes de 16 à 21, pas plus et tu regardes en pas à pas ce que ça fait
A+
 
Re : Macro ajuster le nombre de ligne

Merci Bcp Gorfael! Voici donc le code que j'ai mis grâce à toi:

Private Sub worksheet_activate()

Dim X As Long
Dim Y As Long


For X = 16 To Sheets("comparer des matériaux").Range("F65536").End(xlUp).Row - 1
Rows(6 & ":" & 8).Copy
Y = Range("D65536").End(xlUp).Row
Rows(Y + 1 & ":" & (Y + 3)).Insert Shift:=xlDown
Rows(Y + 1 & ":" & (Y + 3)).PasteSpecial Paste:=xlPasteFormulas
Next X
Application.CutCopyMode = False

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub

Le problème ce juste que cela se produit dès que j'arrive sur la page, donc si je reviens sur cette page plus tard ça rajoute de nouveaux des lignes! par conséquent il me faudrait un moyen pour que cela ne se produise qu'une seule fois et seulement si on change les données de la premièer feuille! donc je sollicite votre aide à ce propos!

Merci
Jérémy
 
Re : Macro ajuster le nombre de ligne

Re, j'voulais savoir si y avait pas une formule un peu comme ça:

Private Sub worksheet_change()
ActiveSheet.Unprotect
Range(D16).Value = 0
End Sub

Bon, ça marche pas, mais c t ma meilleure idée! :-(
 
Re : Macro ajuster le nombre de ligne

Jérémy à dit:
Merci Bcp Gorfael! Voici donc le code que j'ai mis grâce à toi:

Private Sub worksheet_activate()

Dim X As Long
Dim Y As Long


For X = 16 To Sheets("comparer des matériaux").Range("F65536").End(xlUp).Row - 1
Rows(6 & ":" & 8).Copy
Y = Range("D65536").End(xlUp).Row
Rows(Y + 1 & ":" & (Y + 3)).Insert Shift:=xlDown
Rows(Y + 1 & ":" & (Y + 3)).PasteSpecial Paste:=xlPasteFormulas
Next X
Application.CutCopyMode = False

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub

Le problème ce juste que cela se produit dès que j'arrive sur la page, donc si je reviens sur cette page plus tard ça rajoute de nouveaux des lignes! par conséquent il me faudrait un moyen pour que cela ne se produise qu'une seule fois et seulement si on change les données de la premièer feuille! donc je sollicite votre aide à ce propos!

Merci
Jérémy
salut
Les macros automatiques, celles qui se lancent toutes seules, c'est bien, mais il faut en user et ne pas en abuser 😉.
Pour ton cas, pourquoi ne pas faire une macro simple que tu ne lances que quand tu en as besoin ?

1er 😛rivate Sub worksheet_activate(),se lance automatiquement dès que tu reviens dans ta feuille, d'où le problème.

2me : il faut commencer à prendre de bonnes habitudes :
For X = 16 To Sheets("comparer des matériaux").Range("F65536").End(xlUp).Row - 1
Je suppose que tu es sur la feuille "comparer des matériaux". mais si ce n'st pas le cas, tu vas dans le mur : admettons que tu sois sur la feuille 'Test' tes instructions se lisent comme ça:

For X = 16 To Sheets("comparer des matériaux").Range("F65536").End(xlUp).Row - 1
sheets("Test").Rows(6 & ":" & 8).Copy
Y = sheets("Test").Range("D65536").End(xlUp).Row
sheets("Test").Rows(Y + 1 & ":" & (Y + 3)).Insert Shift:=xlDown
sheets("Test").Rows(Y + 1 & ":" & (Y + 3)).PasteSpecial Paste:=xlPasteFormulas
Next X
Application.CutCopyMode = False

sheets("Test").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub

soit, en début, tu définis ta feuille, soit tu la définis à chaque instruction (c'est lourd)

donc, tu sélectionnes ou active ta feuille au début, et tant qu'une autre n'est pas sélectionnée ou activée, elle le reste et tu n'as pas besoin de la redéfinir
Sheets("comparer des matériaux").activate
For X = 16 To Range("F65536").End(xlUp).Row - 1
Rows(6 & ":" & 8).Copy etc.....
ou comme elle est définie dans le module liée à la feuille, tu ne le précise pas, c'est ta feuille qui est la feuille active, les Macros Private ne peuvent pas être lancées d'une autre feuille

pour le lancement de ta macro, tu changes son nom, et tu peux faire un bouton (barre d'outils contrôle, pas formulaire) qui la lance
-----------------------------------------------------
pour la macro
Private Sub worksheet_change()
ActiveSheet.Unprotect
Range(D16).Value = 0
End Sub

si la feuille protégée[/] change, je la déprotège et je mets D16=0
euh.... Si tu protège ta feuille, c'est pour pas la changer, tu veux faire quoi ?
 
Dernière édition:
Re : Macro ajuster le nombre de ligne

Salut Gorfael! après une réfléxion intense je bloque toujours!

En fait..apparemment je vais dans le mûr! :-(

car je suis sur la feuille comparaer des matériaux!


Rappel: je souhaite que lorsque j'arrive sur la feuille "Informations Procédés" la nombre de lignes soit égal à trois fois le nombre de d'articles de la feuille "Comparer des matériaux" car il y a trois procédés par matériau.
Mon problème actuel c de rajouter seulement le nombre de lignes nécessaires en cas de modification du nombre d'articles sur "comaprer des matériaux"


je suis arrivé à ça:


Private Sub worksheet_activate() 'on arrive sur l'onglet "informations procédés"
Dim X As Long
Dim Y As Long
Dim diff As Long
Dim nbInfosProc As Long
Dim nbCompMat As Long
ActiveSheet.Unprotect
nbInfosProc = ((Sheets("Informations Procédés").Range("F65536").End(xlUp).Row - 6) / 3)
nbCompMat = Sheets("Comparer des matériaux").Range("F65536").End(xlUp).Row - 16
diff = nbCompMat - nbInfosProc
If (diff <> 0) Then
For X = 1 To diff
Y = Range("D65536").End(xlUp).Row
Rows((Y + 1) & ":" & (Y + 3)).Insert Shift:=xlDown
Rows((Y + 1) & ":" & (Y + 3)).PasteSpecial Paste:=xlPasteFormulas
Next X
Application.CutCopyMode = False
End If
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub


mais j'ai une erreur 1004....please help me one more time bitte!! ^^
 
Dernière modification par un modérateur:
Re : Macro ajouter des lignes en bas de page etc..

Merci à toi flo2002!!

grâce à toi, j'ai reregardé mon code et je me suis aperçu qu'en fait j'avais supprimé la ligne ou je copie mes lignes à coller....
merci...
 
Re : Macro ajouter des lignes en bas de page etc..

Bonjour !
Je voulais pas former un nouveau topic et de plus ma demande ressemble un peu au sujet traité.

J'aimerais faire un bouton de commande qui ajoute une ligne à la fin de mon tableau et qui copie en même temps des fonctions qui se retrouvent sur chacune des lignes...

Exemple:
Ajouter ligne --> une ligne apparait à la suite du reste + fonction (A) dans cellule (X) + fonction (B) dans cellule (Y) (cellule x et y sur cette même ligne)

Merci à l'avance !

Oh j'y pense, de plus il y a des "mise en forme conditionnel" qui doivent rester...
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
31
Affichages
4 K
Retour