Probléme de syntaxe dans Excel VBA

Résolu
Maxou le petit Messages postés 47 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 21 mai 2007 - 25 mai 2006 à 07:37
Maxou le petit Messages postés 47 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 21 mai 2007 - 25 mai 2006 à 11:10
Bonjour;

Le code ci-dessous me recheche la dernière cellule pleine de ma zone et l'affecte à la variable "Ligne". Je ne trouve pas la syntaxe pour que "Refersto" prenne en compte les références fixes de ma plage + ma variable (ligne). 

Il y a quelchose qui m'échappe !  

Sub Def_zone()
Dim Ligne As Variant
Columns(2).Find("*", , , , , xlPrevious).Offset(1, 0).Select
Ligne = ActiveCell.Row - 1
MsgBox (Ligne)
Sheets("Essai").Select
ActiveWorkbook.Names.Add _
        Name:="Zone_d_impression", RefersTo:="=Essai!"$A$1:$E,"& ligne
End Sub

D'avance Merci

Maxou

11 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
25 mai 2006 à 09:20
PS : ne tient pas compte de
"Pour une zone, avec dernière cellule :
ActiveWorkbook.Names.Add Name:="sboub", RefersToR1C1:="=Feuil1!R1C1""

c'était le message "bateau" mais je te l'ai modifié (en haut du cadre)
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
25 mai 2006 à 07:45
Salut Maxou,

Sub Def_zone()
Dim Ligne As Variant
Columns(2).Find("*", , , , , xlPrevious).Offset(1, 0).Select
Ligne = ActiveCell.Row - 1
MsgBox (Ligne)
Sheets("Essai").Select
ActiveWorkbook.Names.Add _
Name:="Zone_d_impression", RefersTo:="=Essai!$A$1:$E$" & Ligne
End Sub

Je t'ai corrigé 2 / 3 caractères dans ta formule.
Tu avais un " mal placé, il te manquait un $ et ligne, dans ta déclaration est avec un L majuscule.
De plus, Dim Ligne As Variant c'est pas très bon, met plutôt
Dim Ligne As Long
Essai la avec la modif

@++
Mortalino
0
Maxou le petit Messages postés 47 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 21 mai 2007
25 mai 2006 à 08:17
Bonjour Mortalino;

Ok bien ça marche.
 
J'ai 2 questions :
1) Pourquoi je ne retrouve pas ma zone définie dans le menu déroulant en haut à gauche juste au-dessus de la feuille ?
2) Ma zone existe bien dans la liste des noms de zones, mais si je fais un aperçu avant impression elle n'est pas prise en compte !

Définir automatiquement des zones ainsi n'est peût être pas correct !

A+
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
25 mai 2006 à 08:30
je te propose une autre solution :

Sub Def_zone()
Dim PremLiVide As Variant
PremLiVide = Range("A1").End(xlDown).Row + 1

MsgBox (Ligne)

Sheets("Essai").Select
ActiveSheet.PageSetup.PrintArea = "$A$1:$G$" & Ligne
End Sub

Sur mon PC, ça fonctionne !

@++
Mortalino
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
25 mai 2006 à 08:33
Correction :

Sub Def_zone()
Dim PremLiVide As Variant
PremLiVide = Range("A1").End(xlDown).Row + 1

MsgBox (PremLiVide)

Sheets("Essai").Select
ActiveSheet.PageSetup.PrintArea = "$A$1:$G$" & PremLiVide
End Sub

Sur mon PC, ça fonctionne !

(j'ai changé ton Ligne en PremLiVide et j'ai oublié de faire certaines modifs)
0
Maxou le petit Messages postés 47 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 21 mai 2007
25 mai 2006 à 08:59
Merci Mortalino, super ça marche !

J'essaye de faire la même chose sur ma feuille pour un tableau croisé dynamique auquel je fais référence à une plage nommée, cela m'évite de refaire le TCD à chaque fois que je rajoute des données. (Nota je ne peux pas insérer ces données dans la feuille, techniquement cela me pose des problèmes)
En fait je mets à jour manuellement ces zones dans le menu nom définir.
J'ai juste à actualiser les données du TCD.

La solution fonctionne pour l'impression mais par pour le TCD, alors que la zone existe !
As tu une explication ?

Ce sera la dernière question pour ce théme...

Merci Maxou
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
25 mai 2006 à 09:18
pour faire une référence, c'est différent :

Dim PremLiVide As Variant
PremLiVide = Range("A1").End(xlDown).Row + 1

ActiveWorkbook.Names.Add Name:="sboub", RefersToR1C1:="=Essai!R1C1:R" & PremLiVide & "C5"
___________________________________________
dans "=Feuil1!R1C1" |
R1 veut dire Row 1 (donc 1ere ligne) |
C1 veut dire Columns 1 (donc 1ere colonne) |
=> bref, Range("A1") |
___________________________________________|
Pour une zone, avec dernière cellule :
ActiveWorkbook.Names.Add Name:="sboub", RefersToR1C1:="=Feuil1!R1C1"

Ce que je t'ai donné tout à l'heure, c'est la zone d'impression.

@++
Mortalino
0
Maxou le petit Messages postés 47 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 21 mai 2007
25 mai 2006 à 10:46
Encore merci Mortalino.

Pour mon TCD le pb n'est pas réglé, je n'arrive pas à construire mon TCD en faisant référence à ce nom de plage.
Mais je ta réponse m'as donné une autre piste.

Si pb je reposerai ma question sur le forum !

A+
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
25 mai 2006 à 10:48
Qu'est ce que tu appelles TCD ?

ça me mettra peut-être sur la voie concernant ce que tu veux faire !!
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
25 mai 2006 à 10:50
C'est bon, j'ai compris...
"tableau croisé dynamique"

(moi et les abréviations, ça fait pas 2 !)
0
Maxou le petit Messages postés 47 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 21 mai 2007
25 mai 2006 à 11:10
La mauvaise habitude du boulot "Un tableau croisé dynamique" !

Maxou
0