Bonjour,

Je mets à jour périodiquement une base de données d’indicateurs (Base de Données) en copiant collant une feuille de mise à jour (Mise à jour) ayant ce jeu d’indicateurs et en modifiant la date et la valeur, pour la nouvelle période. Les 2 bases sont au format Tableau et j’ai automatisé avec une macro le copier-coller et la remise à blanc de la feuille Mise à Jour. Cela fonctionne. Voir ci-dessous.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub MàJ()
Dim ligne As Long
'Sélection de la feuille Mise à Jour (Feuil3) dans le cahier
    Feuil3.Select
'Sélection du tableau Mise à Jour
    Range("A1").CurrentRegion.Offset(1).Resize(Range("A1").CurrentRegion.Rows.Count - 1, Range("A1").CurrentRegion.Columns.Count).Select
    Selection.Copy
'Sélection de la feuille Base de données
    Sheets("Données").Select
'Numéro de la première ligne vide
   ligne = Sheets("Données").Range("A1048576").End(xlUp).Row + 1
'Sélection de la première ligne vide
   Range("A" & ligne).Select
'Copie de la mise à jour
    ActiveSheet.Paste
'Remettre à blanc les colonnes variables (B et H) de MàJ
    Feuil3.Select
    Range("B2", Range("B2").End(xlDown)).Clear
    Range("H2", Range("H2").End(xlDown)).Clear
End Sub
J’ai aussi créé une macro qui génère un numéro d’identification (Colonne «A» ID) pour les données ajoutées à la suite de la base principale (qui lui à déjà un numéro ID). Voir code ci-dessous. Or ce code ne fonctionne que si la base est au format Plage de données. Après des recherche, j’ai cru comprendre que c’était lié à l’objet Tableau et qu’il fallait utiliser ListObject et les instruction adaptées. Mais là, j’ai du mal !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub NumAuto()
    Dim i As Long, DernLigne As Long, PremLigne As Long
    Sheets("MàJ").Select
    ' N° de la dernière ligne de la colonne A non vide
    DernLigne = Range("A" & Rows.Count).End(xlUp).Row
    Debug.Print DernLigne
    PremLigne = DernLigne + 1
    Debug.Print PremLigne
    'Remplissage du numéro ID en colonne A jusqu'à la dernière ligne vide en colonne B
        For i = PremLigne To Range("B" & Rows.Count).End(xlUp).Row
            Debug.Print i
            Range("A" & i).Select
            ActiveCell.FormulaR1C1 = i
        Next i
End Sub
Je suis preneur d’une aide pour adapter mes 2 macros au fait que je travaille avec des Objets Tableau. Je suis encore novice en VBA.

En vous remerciant