Comment rajouter une ligneaprès une ligne active en macro

MELSINA2000

XLDnaute Nouveau
Bonjour,

Dans un devis, je voudrais créer des macros qui vont rajouter différentes options.
exemple
Bouton macro 1 : options couleurs
Bouton macro 2 : options tissus...

Aprè avoir créer mes macros , je voudrais avoir la possibilité de choisir n'importe lequel des boutons.
Lorsque je clique sur l'un d'entre eux la macro devra s'intégrer sur la dernière ligne active .
Je ne sais pas quel formule mettre dans ma macro pour qu'elle prenne en compte la dernière ligne remplie et qu'elle passe automatiquement à la nouvelle pour rajouter ma macro.
Dans ma problématique la macro démarre forcément de ma ligne 32.

Sub test1()
'
' test1 Macro
'

'
Rows("32:32").Select
Selection.Insert Shift:=xlDown
Range("A30").Select
Selection.Copy
Range("A32").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("B32").Select
Application.CutCopyMode = False
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=LISTES!$A$204:$A$217"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = "Sélectionner option"
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub

Merci encore pour votre aide.
 

alexane

XLDnaute Occasionnel
Bonjour,
Je ne pense pas qu'il soit possible de déclencher une macro qui écrive dans une macro
Ce qui est possible, c'est de faire un appel de procédure dans une autre procédure avec l'instruction CALL
Call NomMacro : ça va executer la macro appelée au sein d'une procédure
Sinon coller 2 boutons (simple forme créée dans la feuille Excel, à laquelle est associée la macro voulue, par clic droit sur la forme puis Affecter une macro)
 

MELSINA2000

XLDnaute Nouveau
Bonjour,
Je ne pense pas qu'il soit possible de déclencher une macro qui écrive dans une macro
Ce qui est possible, c'est de faire un appel de procédure dans une autre procédure avec l'instruction CALL
Call NomMacro : ça va executer la macro appelée au sein d'une procédure
Sinon coller 2 boutons (simple forme créée dans la feuille Excel, à laquelle est associée la macro voulue, par clic droit sur la forme puis Affecter une macro)

Bonjour,

je ne souhaite pas déclencher une macro qui écrive une autre macro.
J'ai plusieurs bouton de macro.
Je voudrais juste qu'au début de chaque macro on intègre l'obigation d'aller à la dernière ligne disponible.
Exemple si ma première ligne commence sur A1.
Je voudrais que lorsque je clique sur un des boutons de macro passer à la ligne A2...
N'importe quel bouton soit option couleurs ou options tissus, peut importe l'ordre des options, l'objectifs est surtout d'aller à la ligne d'après qui est disponible pour intégrer mon bouton de macro option.

Je ne sais si c'est plus claire.
merci par avance de votre aide.
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le fil, bonjour le forum,

Peut-être comme ça :

VB:
Sub test1()
Dim LI As Integer
LI = Cells(Application.Rows.Count, "A").End(xlUp).Row
Rows(LI).Insert Shift:=xlDown
If LI < 3 Then Exit Sub
Cells(LI - 2, "A").Copy
Cells(LI, "A").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
  SkipBlanks:=False, Transpose:=False

With Cells(LI, "B").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=LISTES!$A$204:$A$217"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = "Sélectionner option"
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub[\code]
 

MELSINA2000

XLDnaute Nouveau
Sub test1()
Dim LI As Integer
LI = Cells(Application.Rows.Count, "A").End(xlUp).Row
Rows(LI).Insert Shift:=xlDown
If LI < 3 Then Exit Sub
Cells(LI - 2, "A").Copy
Cells(LI, "A").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

With Cells(LI, "B").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=LISTES!$A$204:$A$217"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = "Sélectionner option"
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End
With
End
Sub[\code]
 

Robert

XLDnaute Barbatruc
Repose en paix
Re,

Désolé c'est ma faute il faut supprimer : [\code]. Mais si tu dis rien, je vois mal comment j'aurais pu corriger...

VB:
Sub test1()
Dim LI As Integer
LI = Cells(Application.Rows.Count, "A").End(xlUp).Row
Rows(LI).Insert Shift:=xlDown
If LI < 3 Then Exit Sub
Cells(LI - 2, "A").Copy
Cells(LI, "A").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

With Cells(LI, "B").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=LISTES!$A$204:$A$217"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = "Sélectionner option"
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
 

MELSINA2000

XLDnaute Nouveau
Re,

Désolé c'est ma faute il faut supprimer : [\code]. Mais si tu dis rien, je vois mal comment j'aurais pu corriger...

VB:
Sub test1()
Dim LI As Integer
LI = Cells(Application.Rows.Count, "A").End(xlUp).Row
Rows(LI).Insert Shift:=xlDown
If LI < 3 Then Exit Sub
Cells(LI - 2, "A").Copy
Cells(LI, "A").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

With Cells(LI, "B").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=LISTES!$A$204:$A$217"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = "Sélectionner option"
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub

Bonjour,

Le code a priori fonctionne mais je n'ai pas été précise, désolée
Il faudrait que ma macro s'intègre dans cette plage de cellule.
Entre A19 à A33 par exemple.
Au fur et à mesure que je rajoute une ligne article elle s'intègre dans cette plage mais qu'elle aille à la dernière ligne non utilisée.
Si c'est possible qu'à chaque fin de ligne on rajoute une nouvelle ligne pour ne pas manquer de place a chaque fois qu'on clique sur la marco.
Si je comprends bien le début a coller sur chaque macro est le code suivant :

Sub test1()
Dim LI As Integer
LI = Cells(Application.Rows.Count, "A").End(xlUp).Row
Rows(LI).Insert Shift:=xlDown
If LI < 3 Then Exit Sub
Cells(LI - 2, "A").Copy
Cells(LI, "A").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

With Cells(LI, "B").Validation

upload_2018-10-17_11-56-53.png


Encore merci pour votre aide, désolée je débute sur les macros :)
 

MELSINA2000

XLDnaute Nouveau
Re,

En pièce jointe ton fichier modifié. J'ai aussi modifié les formules de la ligne 30. Regarde si ça convient...

Hello,

Merci beaucoup celà fonctionne.
Une autre question pour que je comprenne, j'ai vu que tu as modifié les formules de la ligne 30 en rajoutant un conditionnel SI, pour quel raison s'il te plaît?
Est ce que cette condition est nécessaire pour que les macros s'intègrent automatiquement sur la dernière ligne?
Je dois juste retravailler mon tableau pour rajouter d'autres macro car ce n'était pas encore complètement finalisée.
Encore merci pour ton aide précieuse, je vais pouvoir avancer ;)
 

Discussions similaires