Changement par excel de la référence d'un nom défini

  • Initiateur de la discussion HYBRiD
  • Date de début
H

HYBRiD

Guest
Bonjour tlm :)

Je suis un peu perdu... j'ai monté un code VBA qui permet, en un premier temps, d'extraire des résultats à partir d'une banque de donnée, après quoi ces données sont trsf dans une feuille tampon où les résultats sont nettoyés (enlèvements des valeurs "#N/A" renvoyés par la matrice de la dBase). Les données nettoyées devrait s'inclure automatiquement dans le nom "TAMPON_VALEUR" que j'ai déterminé comme suit:

=DECALER(Trsf!$A$1;;;NBVAL(Trsf!$A:$A);1) (voir le code entier plus bas)

Hors, quand je démarre le code, j'obtiens une erreur du type "erreur définie par l'application ou par l'objet" et quand je retourne voir le nom, il est comme ça:

=DECALER(Trsf!#REF!;;;NBVAL(Trsf!$A:$A);1)

Est-ce que quelqu'un peu m'aider :)

HYBRiD


Mon code (asser basic, mais je suis débutant ;) )

Sub Init_pH()
'
' Permet l'extraction des données sur le pH des 12 sites' vers les graphiques et tableaux de la feuille pH

Sheets("Résultats").Select
ActiveSheet.Range("D6").Select
ActiveCell = "pH"
'Effectue la requête pour le pH

' Site 1
ActiveSheet.Range("D2") = "Site 1"
ActiveSheet.Range("D3") = "01-01-04"
ActiveSheet.Range("E3") = "31-12-04"
'Sélectionne la dateet le site à extraire de la dBase
Worksheets("Résultats").Range("VALEUR3").Copy
Worksheets("Trsf").Select
ActiveSheet.Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.Replace What:="#N/A", Replacement:="", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False
Sheets("Trsf").Select
ActiveSheet.Range("TAMPON_VALEUR").Select
Selection.Copy
Worksheets("pH").Select
ActiveSheet.Range("B4").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Worksheets("Trsf").Select
ActiveSheet.Range("A1:A100").Delete Shift:=xlToLeft


End Sub
 
R

Ronan

Guest
Bonsoir,

le problème "=DECALER(Trsf!#REF!;;;NBVAL(Trsf!$A:$A);1)" vient du fait que, à la fin de ton code, tu supprimes définitivement la plage A1:A100 :

Worksheets("Trsf").Select
ActiveSheet.Range("A1:A100").Delete Shift:=xlToLeft

Ce qui fait que le nom faisant référence à la fonction Decaler, perd sont point de départ qui est la cellule A1

A la place, il vaut mieux inscrire ceci :

Worksheets("Trsf").Select
ActiveSheet.Range("A1:A100").ClearContents

Ce qui a pour but de supprimer le contenu des cellules et non les cellules entières.

@+

Ronan
 

Discussions similaires

Réponses
3
Affichages
591

Statistiques des forums

Discussions
312 310
Messages
2 087 115
Membres
103 477
dernier inscrit
emerica