Macro copiant des cellules dans une liste
Bonjour,
Je tâtonne en programmation et je suis face à un problème que je n'arrive pas à résoudre, même après avoir questionné google, alors je m'adresse à vous, fervents de la programmation, pour venir en aide à la brebis égarée que je suis.
J'ai un très grand tableau de valeur auquel j'ai associé une liste directement avec la commande de excel "créer une liste", ce qui m'est très utile pour les recherches, les filtres et le tri.
J'ai créé une macro pour que, quand on double clique sur une cellule, créer une ligne en dessous de celle sélectionnée en copiant les données de la ligne de la cellule sélectionnée. Pardon, j'ai peur que ce ne soit pas très clair...
Cette macro marche en dehors de la zone de liste mais j'ai une erreur lorsque je l'applique à l'intérieur de la zone de liste. L'erreur est:
Erreur d’exécution 1004
cette opération, qui consiste à déplacer des cellules dans une liste de votre feuille de calcul, n'est pas autorisée.
Mon code est:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If MsgBox("Etes-vous certain de vouloir ajouter ce produit au stock ?", vbYesNo, "Demande de confirmation") = vbYes Then
Rows(ActiveCell.Row).Select
'Selection.Copy ---> ne fonctionne pas dans la zone de liste
ActiveCell.Offset(1).Resize(1, 1).EntireRow.Insert
MsgBox "Le produit a été ajouté au stock"
End If
End Sub
Petite question subsidiaire, comment définir des cellules de la ligne créée en dessous de celle sélectionnée dans ma macro?
Merci par avance de vous intéresser à mon problème!
Bon milieu/fin de journée,
Bonjour
Essaie ce code :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If MsgBox("Etes-vous certain de vouloir ajouter ce produit au stock ?", vbYesNo, "Demande de confirmation") = vbYes Then
Set Plage = Target.CurrentRegion
Col = Plage.Resize(1, 1).Column
nbrecol = Plage.Columns.Count
DerCol = Col + nbrecol - 1
Range(Cells(Target.Row, Col), Cells(Target.Row, DerCol)).Insert Shift:=xlDown
Range(Cells(Target.Row, Col), Cells(Target.Row, DerCol)).Copy
MsgBox "Le produit a été ajouté au stock"
End If
End Sub
Pour la question subsidiaire, il te faudrait préciser...
Bye !
Bonjour,
Si j'ai bien compris :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If MsgBox("Etes-vous certain de vouloir ajouter ce produit au stock ?", vbYesNo, "Demande de confirmation") = vbYes Then
Cancel = True
Target.Insert Shift:=xlDown
Target.Offset(-1) = Target
MsgBox "Le produit a été ajouté au stock"
End If
End Sub
fonctionne aussi.
eric
Bonjour,
Effectivement, ça marche, merci bien!
Je suis passée sur excel 2007 et j'ai bien moins d'erreurs de compatibilité aussi!
Bonne fin de semaine,