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

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #5102921
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" 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.



Jacky
Le #5102891
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" 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.



Modeste
Le #5102851
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)))

Jacky
Le #5102761
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" %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" 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.







Patrick BASTARD
Le #5376771
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" 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.




Patrick BASTARD
Le #5376761
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" %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" 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.






Patrick BASTARD
Le #5376751
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



Publicité
Poster une réponse
Anonyme