Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Insertion de données sur une plage nommée

6 réponses
Avatar
NewsMic
Bonjour,

Soit en A1 l'entête de colonne et de A2 à A11 une plage nommée PLAGE1
En insérant10 enregistrements à partir de A2 (avec un décalage vers le bas)
on a 20 enregistrements de A2 à A21
et la PLAGE1 s'est déplacée de A12 à A21
Actuellement, je redéfinis manuellement la PLAGE1 pour qu'elle prenne tous
les enregistrements de A2 à A21
Existe t'il une solution pour qu'une plage nommée "accepte et englobe"
automatiquement tous les enregistrements, anciens et nouveaux ?
Merci,

NewsMic

6 réponses

Avatar
Jacky
Bonsoir,

Je propose ceci à placer dans le module de la feuille en question
'--------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
ActiveWorkbook.Names.Add Name:="plage1", RefersTo:= _
"=OFFSET(Feuil1!$a$2,,,COUNTA(Feuil1!$a:$a)-1)"
End If
End Sub
'--------------
--
Salutations
JJ


"NewsMic" a écrit dans le message de news:
49930333$0$4057$
Bonjour,

Soit en A1 l'entête de colonne et de A2 à A11 une plage nommée PLAGE1
En insérant10 enregistrements à partir de A2 (avec un décalage vers le
bas) on a 20 enregistrements de A2 à A21
et la PLAGE1 s'est déplacée de A12 à A21
Actuellement, je redéfinis manuellement la PLAGE1 pour qu'elle prenne tous
les enregistrements de A2 à A21
Existe t'il une solution pour qu'une plage nommée "accepte et englobe"
automatiquement tous les enregistrements, anciens et nouveaux ?
Merci,

NewsMic



Avatar
Youky \(BJ\)
Bonjour,
Insertion /nom/définir
fait référence......mettre ceci en mettant bien le nom d'onglet
cela fera une liste toujours à jour
Þcaler(nomonglet!$A$2;0;0;nbval(nomonglet!$A:$A);1)

--
Youky (BJ)
Avatar
Fredo P.
il y a aucun inconvénient à nommer ta plage à partir de la première ligne
(l'entête), de cette façon ta plage prendra la bonne dimension.
"NewsMic" a écrit dans le message de
news:49930333$0$4057$
Bonjour,

Soit en A1 l'entête de colonne et de A2 à A11 une plage nommée PLAGE1
En insérant10 enregistrements à partir de A2 (avec un décalage vers le


bas)
on a 20 enregistrements de A2 à A21
et la PLAGE1 s'est déplacée de A12 à A21
Actuellement, je redéfinis manuellement la PLAGE1 pour qu'elle prenne tous
les enregistrements de A2 à A21
Existe t'il une solution pour qu'une plage nommée "accepte et englobe"
automatiquement tous les enregistrements, anciens et nouveaux ?
Merci,

NewsMic




Avatar
Fredo P.
Autrement dis, si ta plage commence en A2, l'insertion d'une ligne en A2
pousse ta plage vers le bas alors que si elle est définie à partir de A1, il
y a une véritable insertion et agrandissement de la plage automatique.
Avatar
michdenis
A ) En passant, si le nom est créé à partir d'un événement dans
VBA, pourquoi utiliser une formule plutôt qu'un truc du genre

Range("A1:A" & Range("A65536").end(xlup).row).Name = me.name & "!" & "toto"

B ) Pourquoi définir le nom au niveau du Workbook au lieu de le définir
au niveau de la feuille ? C'est comme si dans une petite procédure sans
raison, on utilisait des variables "public" plutôt que de restreindre l'étendue
ce ces dernières à la procédure concernée. (Même si le nom est défini au
niveau de la feuille, on peut l'utiliser dans une autre feuille, on a pour se
faire que de le faire précéder par le nom de la feuille. þuil1!toto

Mes 2 cents. Quelle générosité !!! ;-)



"Jacky" a écrit dans le message de groupe de discussion :
O#
Bonsoir,

Je propose ceci à placer dans le module de la feuille en question
'--------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
ActiveWorkbook.Names.Add Name:="plage1", RefersTo:= _
"=OFFSET(Feuil1!$a$2,,,COUNTA(Feuil1!$a:$a)-1)"
End If
End Sub
'--------------
--
Salutations
JJ


"NewsMic" a écrit dans le message de news:
49930333$0$4057$
Bonjour,

Soit en A1 l'entête de colonne et de A2 à A11 une plage nommée PLAGE1
En insérant10 enregistrements à partir de A2 (avec un décalage vers le
bas) on a 20 enregistrements de A2 à A21
et la PLAGE1 s'est déplacée de A12 à A21
Actuellement, je redéfinis manuellement la PLAGE1 pour qu'elle prenne tous
les enregistrements de A2 à A21
Existe t'il une solution pour qu'une plage nommée "accepte et englobe"
automatiquement tous les enregistrements, anciens et nouveaux ?
Merci,

NewsMic



Avatar
Jacky
Bonsoir,
Remarques judicieuses
Ce qui donne, sauf erreur (en prévision xl2007)
'------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
Range("a2:a" & Cells(Rows.Count, "a").End(3).Row).Name = Me.Name & "!" &
"Plage1"
End If
End Sub
'------------
Ou dois-je verser les 2 cents
;o))
--
Salutations
JJ


"michdenis" a écrit dans le message de news:

A ) En passant, si le nom est créé à partir d'un événement dans
VBA, pourquoi utiliser une formule plutôt qu'un truc du genre

Range("A1:A" & Range("A65536").end(xlup).row).Name = me.name & "!" &
"toto"

B ) Pourquoi définir le nom au niveau du Workbook au lieu de le définir
au niveau de la feuille ? C'est comme si dans une petite procédure sans
raison, on utilisait des variables "public" plutôt que de restreindre
l'étendue
ce ces dernières à la procédure concernée. (Même si le nom est défini au
niveau de la feuille, on peut l'utiliser dans une autre feuille, on a pour
se
faire que de le faire précéder par le nom de la feuille. þuil1!toto

Mes 2 cents. Quelle générosité !!! ;-)