Modification non voulue de la taille de champ nommé lors d'insertion de lignes

seb26000

XLDnaute Occasionnel
Bonjour à tous,

J'ai créé un champ nommé Toto dont la formule est la suivante :
=DECALER(DONNEES!$L$8;;;NBVAL(DONNEES!$A:$A)-1;1)

Le hic, j'ai une macro qui insere des données en permanence au niveau de la ligne 8. Je viens de remarquer que ma formule change à chaque insertion, ainsi si j'insère une nouvelle ligne au niveau de la ligne 8, la formule devient sans le vouloir : =DECALER(DONNEES!$L$9;;;NBVAL(DONNEES!$A:$A)-1;1), je perds ainsi les infos en L8
Lors de la prochaine insertion, elle deviendra : =DECALER(DONNEES!$L$10;;;NBVAL(DONNEES!$A:$A)-1;1), je perds ainsi les infos en L8 et L9 et ainsi de suite..
J'ai vraiment besoin que la formule de change pas. Mon champ nommé ne peut débuter en $L$7.

Pouvez vous m'aider ?

Merci d'avance !!
 

Excel-lent

XLDnaute Barbatruc
Re : Modification non voulue de la taille de champ nommé lors d'insertion de lignes

Bonsoir Seb2600,

Si tu ne peux pas modifier ta façon de procéder au niveau de la feuille de calcul, il faut que tu change la logique de ta macro.

Envoi nous ton fichier et quelques explications sur le fonctionnement du fichier et de la macro en question. Ainsi nous pourrons voir s'il est possible de remédier à ton problème.

Pense auparavant à : remplacer les données confidentielles par des données fictives, enlever tout ce qui ne sert à rien à la compréhension de ton problème et à sa résolution.

Comment sont triés tes données?

A te lire
Bonne fin de soirée
 

seb26000

XLDnaute Occasionnel
Re : Modification non voulue de la taille de champ nommé lors d'insertion de lignes

Salut Excel-lent,

Merci de ta reponse, donc voici les fichiers impliqués :

J'ai 2 fichiers :
- Nettoyage_demande : Formulaire de demande que l'on remplie
- Nettoyage_données : Base de données où sont stockées les demandes issues du formulaire

Lors que l'utilisateur renseigne le formulaire de demande puis clique sur validation demande, une macro se lance et réalise les actions suivantes :
- ouverture du fichier Nettoyage_donnée en écriture
- controle de la présence de cette demande
- si la demande n'existe pas, les informations présentes dans le formulaires sont insérées au niveau de la ligne 8 dans le fichier.

J'ai créé 2 champs nommés ("Demande_reporting" et "Realisation_reporting"). Ces champs sont définis à partir d'une formule "DECALER' qui adapte la taille du champs au fur et à mesure que le tableau s'agrandit. Les données selectionnées sont de type "date" volontairement car j'effectue des calculs via l'onglet "reporting".
Le debut de ces champs commence à partir de la ligne 8 et non 7(car en ligne 7, les valeurs sont de type texte et ca me met des erreurs dans mes formules de l'onglet REPORTING). Le hic, vu que j'insère toujours à partir de la ligne 8, mes champs nommés se décalent alors que je souhaiterais qu'ils débutent toujour à partir de la ligne 8.

J'espère avoir été compréhensible ! A très bientôt Excel lent !!!

Bon WE



Merci d'avance à tous !!!
 

Pièces jointes

  • Nettoyage locaux - Copie.zip
    140 KB · Affichages: 44
  • Nettoyage locaux - Copie.zip
    140 KB · Affichages: 35
  • Nettoyage locaux - Copie.zip
    140 KB · Affichages: 34

Excel-lent

XLDnaute Barbatruc
Re : Modification non voulue de la taille de champ nommé lors d'insertion de lignes

Bonjour Seb26000,

Comme indiqué sous mon avatar, j'ai une version Excel antérieur à la tienne, or ton fichier est au format Excel 2007/2010.

Je ne peux donc ouvrir/lire ton fichier, mais à l'aide de tes explications très détaillées, je pense avoir trouvé une solution pour ton soucis :

-> supprimer le nom de ta plage "Toto", faite via :
* "insertion" / "nom" / "définir" / ...

-> inclure cela dans ta macro : beaucoup plus simple, et tu n'auras pas ton soucis de lignes pas pris en compte.

VB:
Sub Macro1()
' Macro proposé par Excel-lent
Dim MaPlage As Range

' Code à placer au début de ton code pour effacer la précédente zone "Toto"
ActiveWorkbook.Names("Toto").Delete

' Mettre ici ton insertion de ligne
' Une fois ta(es) nouvelle(s) ligne(s) insérée(s)
' Redéfinir ta nouvelle plage Toto

Set MaPlage = Range([L8], [L8].End(xlDown)).CurrentRegion
ActiveWorkbook.Names.Add Name:="Toto", RefersToR1C1:=MaPlage

End Sub

Testé, ça fonctionne sur 2003, donc sur 2010 les doigts dans le nez ;)

Bonne fin d'après midi
 

seb26000

XLDnaute Occasionnel
Re : Modification non voulue de la taille de champ nommé lors d'insertion de lignes

Superbe Excel lent !!!!

Merci pour ce code, ca fonctionne nickel. J'ai besoin juste d'une petite aide pour finaliser ton code.

En effet dans le code que je mettais avant :
=DECALER(DONNEES!$L$8;;;NBVAL(DONNEES!$A:$A)-1;1)

Tu remarqueras que j'utilisais la formule NBVAL(DONNEES!$A:$A). Je fais cela car c'est elle qui fait reférence en terme de nombre d'enregistrements et j'ai besoin que les plages de données soient comparables. Donc au lieu d'utiliser la fonction :
Set MaPlage = Range([L8], [L8].End(xlDown)).CurrentRegion
Est il possible d'avoir un truc du genre :
Set MaPlage = Range([L8], "L"&(8+NBVAL(DONNEES!$A:$A))).CurrentRegion

Encore merci beaucoup et bon we motard !!!
 

Excel-lent

XLDnaute Barbatruc
Re : Modification non voulue de la taille de champ nommé lors d'insertion de lignes

Salut Seb26000,

Dans ce cas essaye cela :

VB:
Sub Macro1()
' Macro proposé par Excel-lent
Dim MaPlage As Range

' Code à placer au début de ton code pour effacer la précédente zone "Toto"
ActiveWorkbook.Names("Toto").Delete

' Mettre ici ton insertion de ligne
' Une fois ta(es) nouvelle(s) ligne(s) insérée(s)
' Redéfinir ta nouvelle plage Toto

Set MaPlage = Range([L8], Range("L" & [A8].End(xlDown).Row).CurrentRegion
ActiveWorkbook.Names.Add Name:="Toto", RefersToR1C1:=MaPlage

End Sub

Evidement tu peux remplacer [A8] par [A1] ou ... si tu le souhaite. Tout dépend de ton tableau et tes besoins.

Ce qui signifie :
Range([L8], Range("L" & [A8].End(xlDown).Row

Sélectionner la zone qui va de la cellule L8 jusqu'à la cellule ayant pour nom de colonne L et pour numéro de ligne :
Partir de la cellule [A8], et descendre vers le bas jusqu'à la dernière cellule pleine et prendre le numéro de ligne ainsi trouvé

Bon WE motard à toi aussi ;)
V.
 

seb26000

XLDnaute Occasionnel
Re : Modification non voulue de la taille de champ nommé lors d'insertion de lignes

Merci beaucoup de ta patience Excel lent !!
C'est vrai tres gentil !
J'imagine que tu as une GSXF ;-) A bientôt peut etre sur les routes de la drôme ;-))))

Bon WE !!
 

Excel-lent

XLDnaute Barbatruc
Re : Modification non voulue de la taille de champ nommé lors d'insertion de lignes

Bonsoir Seb26000,

J'ai changé depuis, mais cela reste un excel-lent souvenir lol

Pas encore eu le temps de faire un site sur ma moto actuelle.

J'ai passé mes vacances d'été il y a deux ans dans ta région, ça vaut le détour!!! Tu dois t'éclater souvent chanceux.

V.
 

ROGER2327

XLDnaute Barbatruc
Re : Modification non voulue de la taille de champ nommé lors d'insertion de lignes

Bonsoir à tous



En renommant les plages ainsi :
=DECALER(Données!$L$7;1;;NBVAL(Données!$A:$A)-1;1)
le problème ne serait-il réglé sans modifier le code ?



ROGER2327
#5619


Lundi 16 Pédale 139 (Saints Templiers, adeptes - fête Suprême Quarte)
20 Ventôse An CCXX, 9,9950h - cordeau
2012-W10-6T23:59:17Z
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 977
dernier inscrit
Hermet