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.
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
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
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.
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
En vous remerciant
Partager