Zone d'impression paramètrable

bigmousse

XLDnaute Occasionnel
Bonjour à tous,
Je rencontre encore un petit soucis que je ne comprends pas du tout.
J'ai une zone d'impression paramètrable via du code VBA puisque je ne peux pas faire autrement (voir le post :
https://www.excel-downloads.com/threads/zone-dimpression-parametrable.152210/)

Depuis ça fonctionne jusqu'à aujourd'hui, et je ne sais où chercher. Dans mon fichier j'ai plusieurs feuilles qui utilisent ce procédé et ça fonctionne sauf une, vous la trouverez dans le fichier joint, le fichier de base fait plus de 300ko.

Objectif :
Impression en fonction du numero de semaine (paramètre en haut à gauche)


Merci de m'éclairer
Salutations
Mousse
 

Pièces jointes

  • Zone d'impression.xls
    182 KB · Affichages: 69

ROGER2327

XLDnaute Barbatruc
Re : Zone d'impression paramètrable

Bonsoir bigmousse
Je suis étonné que ça ait pu fonctionner.

Essayez en écrivant
Code:
F = "=OFFSET(Personnel!R1C4,,MATCH(Personnel!R3C1,Personnel!R1C4:R1C213,0)-1,50,18)"

Dans votre classeur d'essai, ça fonctionne…​
ROGER2327
#4745


Samedi 14 Sable 138 (, )
24 Frimaire An CCXIX
2010-W50-2T22:05:18Z
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Zone d'impression paramètrable

Re…
Je n'ai pas d'explication. Les formules doivent être construite en pseudo-anglais (je ne voudrais pas offenser nos amis britanniques en parlant d'Anglais à propos du charabia généralement employé en informatique) sauf lorsqu'on utilise FormulaLocal. Je ne vois vraiment pas comment votre procédure a pu fonctionner à un moment ou un autre.
D'autres sauront peut-être vous éclairer…​
ROGER2327
#4757


Dimanche 15 Sable 138 (Khurmookum du Dr Faustroll, SS)
25 Frimaire An CCXIX
2010-W50-3T23:46:30Z
 

Staple1600

XLDnaute Barbatruc
Re : Zone d'impression paramètrable

Bonsoir bigmousse, ROGER2327, job75 (par extension) , le fil, le forum

Extrait de l'aide VBA
Name.RefersToLocal, propriété
Cette propriété renvoie ou définit la formule à laquelle se réfère le nom. La formule est dans la langue de l'utilisateur en notation de type A1 et commence par le signe égal. Type de données String en lecture-écriture.
Syntaxe
expression.RefersToLocal
expression Variable représentant un objet Name.
Exemple
Cet exemple montre comment créer une feuille de calcul et y insérer une liste de tous les noms tirés du classeur actif, ainsi que leurs formules (en notation de type A1 dans la langue de l'utilisateur).
Visual Basic pour Applications
Code:
Set newSheet = ActiveWorkbook.Worksheets.Add
i = 1
For Each nm In ActiveWorkbook.Names
    newSheet.Cells(i, 1).Value = nm.NameLocal
    newSheet.Cells(i, 2).Value = "'" & nm.RefersToLocal
    i = i + 1
Next
bigmousse
Je te laisse adapter le code de Job75 en gardant ta formule en français pour voir ce qui se passe
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Zone d'impression paramètrable

Bonjour bigmousse, Roger, JM,

Bonjour à tous,
Je rencontre encore un petit soucis que je ne comprends pas du tout.

Il y a 2 raisons pour le souci :

1) Comme Roger l'a précisé, il faut rédiger la formule F en anglais, comme je l'avais fait :

Code:
F = "=OFFSET('Personnel'!$D$1,,MATCH('Personnel'!$A$3,'Personnel'!$D$1:$HE$1,0)-1,50,18)"

Noter qu'il n'est pas nécessaire d'utiliser la notation R1C1 pour les références.

2) Surtout, dans le fichier Exemple.xls du FIL QUE VOUS CITEZ, il y avait en A1 une formule volatile grâce à la fonction AUJOURDHUI().

De ce fait la feuille était toujours recalculée et la macro Worksheet_Calculate s'exécutait.

Ce n'est pas le cas avec votre fichier Zone d'impression.xls

Voyez donc le fichier joint avec en A1 la formule volatile :

Code:
=ENT(MOD(ENT((AUJOURDHUI()-2)/7)+0,6;52+5/28))+1

A+
 

Pièces jointes

  • Zone d'impression(1).zip
    42 KB · Affichages: 31

job75

XLDnaute Barbatruc
Re : Zone d'impression paramètrable

Re Jean-Marie,

Normalement on pourrait penser que la formule en français convienne en utilisant RefersToLocal.

Mais j'ai testé en exécutant dans le code de la feuille :

Code:
F = "=DECALER('Personnel'!$D$1;;EQUIV('Personnel'!$A$3;'Personnel'!$D$1:$HE$1;0)-1;50;18)"
Me.Names.Add Name:="Zone_d_impression", RefersToLocal:=F

Le nom n'est pas créé, erreur sur la 2ème ligne "La formule que vous avez tapée contient une erreur".

Par contre, si l'on crée manuellement le nom avec la même formule, ce code la renvoie correctement :

Code:
MsgBox Me.Names("Zone_d_impression").RefersToLocal

Allez savoir pourquoi :confused:

Nota : on pourrait utiliser le nom Print_Area à la place de Zone_d_Impression.

C'est même préférable si l'on veut utiliser la macro avec une version anglaise d'Excel.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 559
Messages
2 089 604
Membres
104 224
dernier inscrit
Brilma