Macro selection de données avec tableau

Bonjour,

Je viens solliciter le forum pour une question qui me travaille l'esprit...

J'ai fais une macro (enregistrement) qui, lorsque l'on clique sur le bouton, va aller copier des données et les collés sur une ligne que l'on appellera historique. L'historique s'incrémente d'une ligne à chaque clique pour y copier les données. Pour cela j'ai créer une ligne historique avec les titres d'items qui m'intéressent

1er cas : j'ai lancé l'enregistrement et j'ai été copié/collé une à une les valeurs dans cette fameuse ligne historique.

en gros j'ai : Date / Produit / LIBELLE TACHE ..................... ça c'est ma ligne de titre

et en dessous je vais copier la date qui correspond, le produit qui correspond etc...

Ces valeurs, issus de formule, sont copié/collé avec collage spécial selon leur valeur (et non formule) pour conserver les données dans l'historique (sinon l'historique prend les valeurs des nouvelles données à chaque fois...). Cette méthode marche.

2ème cas :Avant cela, j'avais procédé différemment, avant de faire mon copier collé, j'ai sélectionné la ligne de titre ainsi qu'une ligne vierge au dessous et j'ai mis sous forme de tableau. J'ai fais mes copiés collés mais cette fois-ci, en activant la macro, cela rajoutait une ligne avec l'ensemble des données mais chaque ligne incrémentée prenait les données de la dernière. En gros l'ensemble de mes lignes historiques existantes prenait les valeurs de la dernière.

En comparant les macros, j'ai remarqué que la seule différence était l'appellation des cellules sélectionnées :

dans le cas ou la macro fonctionnait les cellules étaient de ce type :

    Range("B1").Select
    Selection.Copy
    ActiveWindow.SmallScroll Down:=9
    Range("A36").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A16").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("B36").Select

Dans le cas qui ne marchait pas, les données étaient de ce type :

ActiveWindow.SmallScroll Down:=-3
    Range("B1").Select
    Selection.Copy
    ActiveWindow.SmallScroll Down:=6
    Range("Tableau2[Date]").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

quelqu'un aurait une explication ?

Mon fichier joint vous présente ce qui marche : il suffit de cliquer sur l'onglet enregistrer

Merci beaucoup

voici le lien :

Bonjour,

à tester,

Sub test1()
dest = Array("B1", "A16", "B16", "A20", "A1", "A1", "F20", "G20", "C7", "J20", "B9", "B11", "B13", "A1", "A1")
Set NewRow = ActiveSheet.ListObjects("Tableau2").ListRows.Add
For i = 1 To ActiveSheet.ListObjects("Tableau2").ListColumns.Count
   With NewRow
    .Range(i) = Range(dest(i - 1)).Value
     If i = 1 Then .Range(i).NumberFormat = "dd/mm/yyyy hh:mm:ss"
   End With
Next i

'Tri : montant ou descendant (ascending or descending)
    With ActiveWorkbook.Worksheets("Budget").ListObjects("Tableau2").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("Tableau2[[#All],[DATE]]"), SortOn:=xlSortOnValues, Order _
                :=xlAscending, DataOption:=xlSortNormal
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Bonjour,

Tout d'abord merci pour la réponse je vais m'empresser de l'essayer.

Il s'agit d'une version simplifié de ce que j'ai déjà fait c'est bien cela ?

(Oui car ce que j'avais bidouillé marchait, je souhaitais comprendre pourquoi la mise en forma d'un tableau avant l'enregistrement de la macro empêchait celle ci de fonctionner correctement mais mon explication était peu être un peu fouilli)

Merci, j'apprécie tellement ce forum,

Fred

Rechercher des sujets similaires à "macro selection donnees tableau"