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
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
Bonjour le fil, bonjour le forum,

Oui en effet, j'ai bien dit ça... Mais toi, tu en dis quoi ?
 

MELSINA2000

XLDnaute Nouveau
Bonjour Robert,

Je vous rermcie pour votre réponse.
Il y a un message d'erreur qui s'affiche
Compile error :
Syntax error
Code en rouge : End Sub[\code]

Je n'ai donc pas pu tester si la macro fonctionne correctement.
 

Robert

XLDnaute Barbatruc
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 :)
 

Robert

XLDnaute Barbatruc
Re,

Dis-moi Melsina, si ta voiture a un problème tu amènes quoi chez le garagiste ? ta voiture ou une photo de ta voiture...
 

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 ;)
 

Robert

XLDnaute Barbatruc
Re,

Non c'est juste que dans la nouvelle ligne, comme la colonne B est vide ça affiche une erreur sur les formules. Plus avec le Si... Mais ça n'a rien à voir avec les macros.
 

MELSINA2000

XLDnaute Nouveau
Re,

Non c'est juste que dans la nouvelle ligne, comme la colonne B est vide ça affiche une erreur sur les formules. Plus avec le Si... Mais ça n'a rien à voir avec les macros.
Hello Robert,

Je suis désolée de te solliciter de nouveau car j'ai du retravailler mon tableau pour que ce soit le plus simple possible dans son utilisation.
Dans le fichier j'ai finalement intégré mes macros dans le 1er onglet PHASE1.
J'ai dupliqué le tableau de devis et mis tous mes boutons de macros.
L'objectif est le même que précedemment, je veux juste copier les données des articles et l'integrer dans l'onglet DEVIS.
L'onglet devis me servira de présentation pour mon offre commerciale.
Tout se passe en réalité dans mon onglet PHASE1.
Si je clique sur l'un des boutons de macro il va aller s'intégrer à la suite des autres sans que celà dépasse la ligne total.
Je voudrais le même principe que le tableau d'avant.
Est il possible de me configurer les macros qui sont dans l'onglet PHASE1 stp?
Une fois que ce paramètre sera mise en place, je pourrais changer à volonté mon tableau devis PHASE1 et sélectionner les produits que je souhaite et ensuite cliquer sur le bouton macro qui le concerne et qui va se rajouter au fur et à mesure dans mon onglet devis.
Je ne sais pas si c'est claire la présentation de ma demande.
Je te remercie d'avance pour ton aide et je te renvoie donc ma voiture au garage ;)
 

Fichiers joints

Discussions similaires


Haut Bas