Figer formule avec suppression de tableau
Bonjour,
J'ai un problème avec l'utilisation d'une formule qui dépends d'un tableau (nommé BDD).
La formule est de type :
=SI(LIGNES($1:1)<=NB.SI(BDD[EMPREINTE];ChoixEmpreinte);SI(ESTVI;............ETC (longue)
Hors, lors d'une macro, je supprime mon tableau BDD et le remplacer par un nouveau (que je nomme aussi BDD).
Lors de la suppression de ce tableau, ma formule qui ne trouve plus BDD se transforme :
=SI(LIGNES($1:1)<=NB.SI(#REF!;ChoixEmpreinte);....
→ Comment est-ce que je pourrais figer cette formule pour éviter qu'elle change malgré la suppression de mon tableau ?
Merci de l'aide!
Bonjour,
Joins un fichier pour une aide adaptée du forum et précise la version Excel utilisée.
Cdlt.
Bonjour,
Je met joint un exemple de mon problème.
J'ai fais un brouillon de la macro d'importation avec l'enregistreur
Je vais expliquer au mieux mon fichier :
FEUILLE "ANALYSE" :
Là ou se trouve mes formules citées plus haut (renvoie des données du tableau BDD selon la double liste EMPREINTE / COTE).
(→ après avoir lancé la macro, elles ne seront plus bonne)
FEUILLE "DONNEES" :
Je pars avec un tableau nommé BDD
Je vais écraser ce tableau par un nouveau à partir du bouton "IMPORTATION" (il va chercher le tableau dans la feuille grisée, me le coller sur ma feuille et le renommer en tant que BDD).
Résultat :
Après avoir utilisé la macro, ma formule dans la feuille "ANALYSE" n'est plus bonne : 'BDD' dans la formule à été remplacé par #REF! (Le tableau BDD ayant été supprimé temporairement pour le remplacer)
→ Je dois réécrire ma formule
→ La liste "COTE" ne marche plus
Merci!
Bonjour,
Voir macro révisée :
Private Sub IMPORTATION_Click()
Dim lo As ListObject, rngData As Range, lastRow As Long
Set lo = Range("BDD").ListObject
If Not lo.DataBodyRange Is Nothing Then lo.DataBodyRange.Delete
With Worksheets("IMPORTATION")
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rngData = .Cells(2, 1).Resize(lastRow - 1, 6)
End With
rngData.Copy Destination:=lo.InsertRowRange.Cells(1)
End SubBonjour,
Malheureusement ça ne marche pas tout à fait comme je voudrais :
La macro me supprime que les lignes et me laisse les en-têtes, alors qu'elles vont changer selon le fichier d'importation :
Si je rajoute des colonnes à mon tableau BDD de base (ou j'en supprime, je renomme etc), la macro ne va pas les prendre en compte.
Or, tout va changer : j'aurais des nouvelles mesures, un ordre différent dans les colonnes etc.
J'ai oublié de dire que c'est vraiment tout mon tableau que je remodèle à chaque importation
(J'importe normalement les données d'un autre fichier normalement avec :
Workbooks.Open Filename:=Lien & "\" & Nom & "." & Extensionpuis je copie les données comme sur ce fichier etc).
Merci pour l'aide!
Bonjour,
Finalement je me suis basé sur ton code pour faire un truc comme ça :
(Un peu brouillon mais ça marche)
Private Sub IMPORTATION_Click()
Dim BDDligne As Integer
Dim BDDcolonne As Integer
Dim lo As ListObject, rngData As Range, lastRow As Long
Set lo = Range("BDD").ListObject
If Not lo.DataBodyRange Is Nothing Then lo.DataBodyRange.Delete
With Worksheets("IMPORTATION")
BDDcolonne = .Cells(1, Columns.Count).End(xlToLeft).Column
BDDligne = .Range("A" & Rows.Count).End(xlUp).Row
Set rngData = .Cells(2, 1).Resize(BDDligne - 1, BDDcolonne)
End With
rngData.Copy Destination:=lo.InsertRowRange.Cells(1)
Sheets("IMPORTATION").Select
ActiveSheet.Rows("1:1").Select
Selection.Copy
Sheets("DONNES").Select
ActiveSheet.Rows("8:8").Select
ActiveSheet.Paste
ActiveSheet.ListObjects("BDD").Resize Range(Cells(8, 1), Cells(7 + BDDligne, BDDcolonne))
End SubPour prendre en compte les changement du tableau dans la feuille "IMPORTATION" :
- De nom de colonne
- De taille de colonne
Merci bcp pour l'aide!