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

14reftableau.xlsm (40.41 Ko)

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 Sub

Bonjour,

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 & "." & Extension

puis 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 Sub

Pour prendre en compte les changement du tableau dans la feuille "IMPORTATION" :
- De nom de colonne
- De taille de colonne

Merci bcp pour l'aide!

Rechercher des sujets similaires à "figer formule suppression tableau"