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,

Rechercher des sujets similaires à "macro copiant liste"