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

Création d'une zone nommée [VBA]

7 réponses
Avatar
Patrick BASTARD
Bonsoir à tous.

Je cherche à copier une zone, à la coller à la fin de mes données, et à la
nommer une fois copiée.
Le code ci-dessous, élaboré avec votre aide, fonctionne parfaitement en cas
de nom valide.
Si le nom n'est pas valide, la zone est quand même copiée.

L'un d'entre vous aurait-il la gentillesse de me dire comment faire pour
qu'en cas de nom invalide, la zone ne soit pas copiée ?
Inverser l'ordre des lignes, mais comment ?

D'avance, merci.
************************************
Application.Goto Reference:="Base"
Selection.Copy
ActiveSheet.[a65536].End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False

Titre = "Définir un nom"
Do
LeNom = InputBox(Titre, "Evaluation des sous-traitants")
If LeNom = "" Then Exit Sub
ActiveCell.Value = UCase(LeNom)
'Remplace les espaces par un underscore pour que le nom soit référencé
LeNom = UCase(Application.Substitute(LeNom, " ", "_"))

'Teste la validité du nom
On Error Resume Next
ActiveWorkbook.Names.Add Name:=LeNom, RefersTo:=Selection
Titre = LeNom & Chr(10) & "Le nom n'est pas accepté. Choisissez un
autre nom." _
& Chr(10) & Chr(10) & "Quels sont les caractères autorisés ?"
& Chr(10) & _
"Le premier caractère d'un nom doit être une lettre ou un
caractère de soulignement." _
& " Les autres caractères du nom peuvent être des lettres, des
nombres, des points et" _
& " des caractères de soulignement."
Loop Until Err = 0
...
************************************

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.

7 réponses

Avatar
Daniel.C
Bonsoir.
Essaie :

Application.Goto Reference:="Base"
Selection.Copy
ActiveSheet.[a65536].End(xlUp).Offset(1, 0).Select

Titre = "Définir un nom"
Do
ActiveSheet.Paste
LeNom = InputBox(Titre, "Evaluation des sous-traitants")
If LeNom = "" Then Exit Sub
ActiveCell.Value = UCase(LeNom)
'Remplace les espaces par un underscore pour que le nom soit référencé
LeNom = UCase(Application.Substitute(LeNom, " ", "_"))

'Teste la validité du nom
On Error Resume Next
ActiveWorkbook.Names.Add Name:=LeNom, RefersTo:=Selection
Titre = LeNom & Chr(10) & "Le nom n'est pas accepté. Choisissez un
autre nom." _
& Chr(10) & Chr(10) & "Quels sont les caractères autorisés ?"
_
& Chr(10) & _
"Le premier caractère d'un nom doit être une lettre ou un
caractère de soulignement." _
& " Les autres caractères du nom peuvent être des lettres, des
nombres, des points et" _
& " des caractères de soulignement."
If Err.Number <> 0 Then Selection.Clear
Loop Until Err = 0
Application.CutCopyMode = False

Cordialement.
Daniel
"Patrick BASTARD" a écrit dans le
message de news:
Bonsoir à tous.

Je cherche à copier une zone, à la coller à la fin de mes données, et à la
nommer une fois copiée.
Le code ci-dessous, élaboré avec votre aide, fonctionne parfaitement en
cas de nom valide.
Si le nom n'est pas valide, la zone est quand même copiée.

L'un d'entre vous aurait-il la gentillesse de me dire comment faire pour
qu'en cas de nom invalide, la zone ne soit pas copiée ?
Inverser l'ordre des lignes, mais comment ?

D'avance, merci.
************************************
Application.Goto Reference:="Base"
Selection.Copy
ActiveSheet.[a65536].End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False

Titre = "Définir un nom"
Do
LeNom = InputBox(Titre, "Evaluation des sous-traitants")
If LeNom = "" Then Exit Sub
ActiveCell.Value = UCase(LeNom)
'Remplace les espaces par un underscore pour que le nom soit référencé
LeNom = UCase(Application.Substitute(LeNom, " ", "_"))

'Teste la validité du nom
On Error Resume Next
ActiveWorkbook.Names.Add Name:=LeNom, RefersTo:=Selection
Titre = LeNom & Chr(10) & "Le nom n'est pas accepté. Choisissez un
autre nom." _
& Chr(10) & Chr(10) & "Quels sont les caractères autorisés ?"
& Chr(10) & _
"Le premier caractère d'un nom doit être une lettre ou un
caractère de soulignement." _
& " Les autres caractères du nom peuvent être des lettres,
des nombres, des points et" _
& " des caractères de soulignement."
Loop Until Err = 0
...
************************************

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.



Avatar
Jacky
Bonsoir,

Je dirais le tout en fin de peloton....

sub jj()
'---------
'----------
'code actuel
'------
Loop Until Err = 0
Application.Goto Reference:="Base"
Selection.Copy ActiveSheet.[a65536].End(xlUp).Offset(1, 0)
' ActiveSheet.Paste*** inutile
Application.CutCopyMode = False
end sub
'------------------
J'avoue que je ne comprends pas tout à fait le pourquoi de la chose.

--
Salutations
JJ


"Patrick BASTARD" a écrit dans le
message de news:
Bonsoir à tous.

Je cherche à copier une zone, à la coller à la fin de mes données, et à la
nommer une fois copiée.
Le code ci-dessous, élaboré avec votre aide, fonctionne parfaitement en
cas de nom valide.
Si le nom n'est pas valide, la zone est quand même copiée.

L'un d'entre vous aurait-il la gentillesse de me dire comment faire pour
qu'en cas de nom invalide, la zone ne soit pas copiée ?
Inverser l'ordre des lignes, mais comment ?

D'avance, merci.
************************************
Application.Goto Reference:="Base"
Selection.Copy
ActiveSheet.[a65536].End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False

Titre = "Définir un nom"
Do
LeNom = InputBox(Titre, "Evaluation des sous-traitants")
If LeNom = "" Then Exit Sub
ActiveCell.Value = UCase(LeNom)
'Remplace les espaces par un underscore pour que le nom soit référencé
LeNom = UCase(Application.Substitute(LeNom, " ", "_"))

'Teste la validité du nom
On Error Resume Next
ActiveWorkbook.Names.Add Name:=LeNom, RefersTo:=Selection
Titre = LeNom & Chr(10) & "Le nom n'est pas accepté. Choisissez un
autre nom." _
& Chr(10) & Chr(10) & "Quels sont les caractères autorisés ?"
& Chr(10) & _
"Le premier caractère d'un nom doit être une lettre ou un
caractère de soulignement." _
& " Les autres caractères du nom peuvent être des lettres,
des nombres, des points et" _
& " des caractères de soulignement."
Loop Until Err = 0
...
************************************

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.



Avatar
Modeste
Bonsour® Patrick BASTARD avec ferveur ;o))) vous nous disiez :

Si le nom n'est pas valide, la zone est quand même copiée.

L'un d'entre vous aurait-il la gentillesse de me dire comment faire
pour qu'en cas de nom invalide, la zone ne soit pas copiée ?
************************************


Application.Goto Reference:="Base"
Selection.Copy
ActiveSheet.[a65536].End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Reprise:
Titre = "Définir un nom"
LeNom = InputBox(Titre, "Evaluation des sous-traitants")
If LeNom = "" Then Exit Sub
ActiveCell.Value = UCase(LeNom)
'Remplace les espaces par un underscore pour que le nom soit
référencé LeNom = UCase(Application.Substitute(LeNom, " ", "_"))

'Teste la validité du nom
On Error goto TtrtErrNom
ActiveWorkbook.Names.Add Name:=LeNom, RefersTo:=Selection
Exit sub

trtErrNom:
Err.Clear
Msgbox LeNom _
& Chr(10) & "Ce nom n'est pas accepté. Choisissez un autre nom." _
& Chr(10) & Chr(10) & "Quels sont les caractères autorisés ?" _
& Chr(10) & "Le premier caractère d'un nom doit être une lettre" _
& " ou un caractère de soulignement." _
& " Les autres caractères du nom peuvent être des lettres, des nombres,"
_
& " des points et des caractères de soulignement.", -
vbcritical, " Attention !!!"
Goto Reprise
End Sub

--
@+
;o)))

Avatar
Jacky
Re...
Si j'ai bien compris
'---------------
Sub jj()
Titre = "Définir un nom"
Do
LeNom = InputBox(Titre, "Evaluation des sous-traitants")
If LeNom = "" Then Exit Sub
ActiveCell.Value = UCase(LeNom)
'Remplace les espaces par un underscore pour que le nom soit référencé
LeNom = UCase(Application.Substitute(LeNom, " ", "_"))

'Teste la validité du nom
On Error Resume Next
ActiveWorkbook.Names.Add Name:=LeNom, RefersTo:=Selection
Titre = LeNom & Chr(10) & "Le nom n'est pas accepté. Choisissez un
autre nom." _
& Chr(10) & Chr(10) & "Quels sont les caractères autorisés ?"
& Chr(10) & _
"Le premier caractère d'un nom doit être une lettre ou un
caractère de soulignement." _
& " Les autres caractères du nom peuvent être des lettres, des
nombres, des points et" _
& " des caractères de soulignement."
Loop Until Err = 0
Application.Goto Reference:="Base"
Selection.Copy ActiveSheet.[a65536].End(xlUp).Offset(1, 0)
ActiveWorkbook.Names.Add Name:=LeNom, RefersTo:=Range("a1:a" &
[a65536].End(xlUp).Row)
Application.CutCopyMode = False
End Sub
'------------------
--
Salutations
JJ


"Jacky" a écrit dans le message de news:
%236$
Bonsoir,

Je dirais le tout en fin de peloton....

sub jj()
'---------
'----------
'code actuel
'------
Loop Until Err = 0
Application.Goto Reference:="Base"
Selection.Copy ActiveSheet.[a65536].End(xlUp).Offset(1, 0)
' ActiveSheet.Paste*** inutile
Application.CutCopyMode = False
end sub
'------------------
J'avoue que je ne comprends pas tout à fait le pourquoi de la chose.

--
Salutations
JJ


"Patrick BASTARD" a écrit dans le
message de news:
Bonsoir à tous.

Je cherche à copier une zone, à la coller à la fin de mes données, et à
la nommer une fois copiée.
Le code ci-dessous, élaboré avec votre aide, fonctionne parfaitement en
cas de nom valide.
Si le nom n'est pas valide, la zone est quand même copiée.

L'un d'entre vous aurait-il la gentillesse de me dire comment faire pour
qu'en cas de nom invalide, la zone ne soit pas copiée ?
Inverser l'ordre des lignes, mais comment ?

D'avance, merci.
************************************
Application.Goto Reference:="Base"
Selection.Copy
ActiveSheet.[a65536].End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False

Titre = "Définir un nom"
Do
LeNom = InputBox(Titre, "Evaluation des sous-traitants")
If LeNom = "" Then Exit Sub
ActiveCell.Value = UCase(LeNom)
'Remplace les espaces par un underscore pour que le nom soit référencé
LeNom = UCase(Application.Substitute(LeNom, " ", "_"))

'Teste la validité du nom
On Error Resume Next
ActiveWorkbook.Names.Add Name:=LeNom, RefersTo:=Selection
Titre = LeNom & Chr(10) & "Le nom n'est pas accepté. Choisissez un
autre nom." _
& Chr(10) & Chr(10) & "Quels sont les caractères autorisés
?" & Chr(10) & _
"Le premier caractère d'un nom doit être une lettre ou un
caractère de soulignement." _
& " Les autres caractères du nom peuvent être des lettres,
des nombres, des points et" _
& " des caractères de soulignement."
Loop Until Err = 0
...
************************************

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.







Avatar
Patrick BASTARD
Bonjour, *Daniel.C*

Un grand merci.
Je teste ta solution, celle de Jacky et celle de Modeste, et reviens en cas
de souci.

Je profite de l'occasion pour te souhaiter, ainsi qu'à ceux qui te sont
chers, de joyeuses fêtes de fin d'année.

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.




Bonsoir.
Essaie :

Application.Goto Reference:="Base"
Selection.Copy
ActiveSheet.[a65536].End(xlUp).Offset(1, 0).Select

Titre = "Définir un nom"
Do
ActiveSheet.Paste
LeNom = InputBox(Titre, "Evaluation des sous-traitants")
If LeNom = "" Then Exit Sub
ActiveCell.Value = UCase(LeNom)
'Remplace les espaces par un underscore pour que le nom soit
référencé LeNom = UCase(Application.Substitute(LeNom, " ",
"_"))
'Teste la validité du nom
On Error Resume Next
ActiveWorkbook.Names.Add Name:=LeNom, RefersTo:=Selection
Titre = LeNom & Chr(10) & "Le nom n'est pas accepté.
Choisissez un autre nom." _
& Chr(10) & Chr(10) & "Quels sont les caractères
autorisés ?" _
& Chr(10) & _
"Le premier caractère d'un nom doit être une lettre ou
un caractère de soulignement." _
& " Les autres caractères du nom peuvent être des
lettres, des nombres, des points et" _
& " des caractères de soulignement."
If Err.Number <> 0 Then Selection.Clear
Loop Until Err = 0
Application.CutCopyMode = False

Cordialement.
Daniel
"Patrick BASTARD" a écrit dans le
message de news:
Bonsoir à tous.

Je cherche à copier une zone, à la coller à la fin de mes données,
et à la nommer une fois copiée.
Le code ci-dessous, élaboré avec votre aide, fonctionne parfaitement
en cas de nom valide.
Si le nom n'est pas valide, la zone est quand même copiée.

L'un d'entre vous aurait-il la gentillesse de me dire comment faire
pour qu'en cas de nom invalide, la zone ne soit pas copiée ?
Inverser l'ordre des lignes, mais comment ?

D'avance, merci.
************************************
Application.Goto Reference:="Base"
Selection.Copy
ActiveSheet.[a65536].End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False

Titre = "Définir un nom"
Do
LeNom = InputBox(Titre, "Evaluation des sous-traitants")
If LeNom = "" Then Exit Sub
ActiveCell.Value = UCase(LeNom)
'Remplace les espaces par un underscore pour que le nom soit
référencé LeNom = UCase(Application.Substitute(LeNom, " ",
"_")) 'Teste la validité du nom
On Error Resume Next
ActiveWorkbook.Names.Add Name:=LeNom, RefersTo:=Selection
Titre = LeNom & Chr(10) & "Le nom n'est pas accepté.
Choisissez un autre nom." _
& Chr(10) & Chr(10) & "Quels sont les caractères
autorisés ?" & Chr(10) & _
"Le premier caractère d'un nom doit être une lettre
ou un caractère de soulignement." _
& " Les autres caractères du nom peuvent être des
lettres, des nombres, des points et" _
& " des caractères de soulignement."
Loop Until Err = 0
...
************************************

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.




Avatar
Patrick BASTARD
Bonjour, *Jacky*


Un grand merci.
Je teste ta solution, celle de Daniel et celle de Modeste, et reviens en cas
de souci.

Je profite de l'occasion pour te souhaiter, ainsi qu'à ceux qui te sont
chers, de joyeuses fêtes de fin d'année.

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.


Re...
Si j'ai bien compris
'---------------
Sub jj()
Titre = "Définir un nom"
Do
LeNom = InputBox(Titre, "Evaluation des sous-traitants")
If LeNom = "" Then Exit Sub
ActiveCell.Value = UCase(LeNom)
'Remplace les espaces par un underscore pour que le nom soit
référencé LeNom = UCase(Application.Substitute(LeNom, " ",
"_"))
'Teste la validité du nom
On Error Resume Next
ActiveWorkbook.Names.Add Name:=LeNom, RefersTo:=Selection
Titre = LeNom & Chr(10) & "Le nom n'est pas accepté.
Choisissez un autre nom." _
& Chr(10) & Chr(10) & "Quels sont les caractères
autorisés ?" & Chr(10) & _
"Le premier caractère d'un nom doit être une lettre ou
un caractère de soulignement." _
& " Les autres caractères du nom peuvent être des
lettres, des nombres, des points et" _
& " des caractères de soulignement."
Loop Until Err = 0
Application.Goto Reference:="Base"
Selection.Copy ActiveSheet.[a65536].End(xlUp).Offset(1, 0)
ActiveWorkbook.Names.Add Name:=LeNom, RefersTo:=Range("a1:a" &
[a65536].End(xlUp).Row)
Application.CutCopyMode = False
End Sub
'------------------

"Jacky" a écrit dans le message de news:
%236$
Bonsoir,

Je dirais le tout en fin de peloton....

sub jj()
'---------
'----------
'code actuel
'------
Loop Until Err = 0
Application.Goto Reference:="Base"
Selection.Copy ActiveSheet.[a65536].End(xlUp).Offset(1, 0)
' ActiveSheet.Paste*** inutile
Application.CutCopyMode = False
end sub
'------------------
J'avoue que je ne comprends pas tout à fait le pourquoi de la chose.

--
Salutations
JJ


"Patrick BASTARD" a écrit dans
le message de news:
Bonsoir à tous.

Je cherche à copier une zone, à la coller à la fin de mes données,
et à la nommer une fois copiée.
Le code ci-dessous, élaboré avec votre aide, fonctionne
parfaitement en cas de nom valide.
Si le nom n'est pas valide, la zone est quand même copiée.

L'un d'entre vous aurait-il la gentillesse de me dire comment faire
pour qu'en cas de nom invalide, la zone ne soit pas copiée ?
Inverser l'ordre des lignes, mais comment ?

D'avance, merci.
************************************
Application.Goto Reference:="Base"
Selection.Copy
ActiveSheet.[a65536].End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False

Titre = "Définir un nom"
Do
LeNom = InputBox(Titre, "Evaluation des sous-traitants")
If LeNom = "" Then Exit Sub
ActiveCell.Value = UCase(LeNom)
'Remplace les espaces par un underscore pour que le nom soit
référencé LeNom = UCase(Application.Substitute(LeNom, " ",
"_")) 'Teste la validité du nom
On Error Resume Next
ActiveWorkbook.Names.Add Name:=LeNom, RefersTo:=Selection
Titre = LeNom & Chr(10) & "Le nom n'est pas accepté.
Choisissez un autre nom." _
& Chr(10) & Chr(10) & "Quels sont les caractères
autorisés ?" & Chr(10) & _
"Le premier caractère d'un nom doit être une lettre
ou un caractère de soulignement." _
& " Les autres caractères du nom peuvent être des
lettres, des nombres, des points et" _
& " des caractères de soulignement."
Loop Until Err = 0
...
************************************

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.






Avatar
Patrick BASTARD
Bonsoir, *Modeste*


Un grand merci.
Je teste ta solution, celle de Daniel et celle de Jacky, et reviens en cas
de souci.

Je profite de l'occasion pour te souhaiter, ainsi qu'à ceux qui te sont
chers, de joyeuses fêtes de fin d'année.

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.

Bonsour® Patrick BASTARD avec ferveur ;o))) vous nous disiez :

Si le nom n'est pas valide, la zone est quand même copiée.

L'un d'entre vous aurait-il la gentillesse de me dire comment faire
pour qu'en cas de nom invalide, la zone ne soit pas copiée ?
************************************


Application.Goto Reference:="Base"
Selection.Copy
ActiveSheet.[a65536].End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Reprise:
Titre = "Définir un nom"
LeNom = InputBox(Titre, "Evaluation des sous-traitants")
If LeNom = "" Then Exit Sub
ActiveCell.Value = UCase(LeNom)
'Remplace les espaces par un underscore pour que le nom soit
référencé LeNom = UCase(Application.Substitute(LeNom, " ",
"_"))
'Teste la validité du nom
On Error goto TtrtErrNom
ActiveWorkbook.Names.Add Name:=LeNom, RefersTo:=Selection
Exit sub

trtErrNom:
Err.Clear
Msgbox LeNom _
& Chr(10) & "Ce nom n'est pas accepté. Choisissez un autre
nom." _ & Chr(10) & Chr(10) & "Quels sont les caractères
autorisés ?" _ & Chr(10) & "Le premier caractère d'un nom
doit être une lettre" _ & " ou un caractère de soulignement." _ & "
Les autres caractères du nom peuvent être des lettres,
des nombres," _
& " des points et des caractères de soulignement.", -
vbcritical, " Attention !!!"
Goto Reprise
End Sub