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 marche très bien. Voir ci-dessous.
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 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 !
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.
Merci
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 marche très bien. Voir ci-dessous.
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 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 !
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.
Merci