XL pour MAC Macro qui s'exécute automatiquement

pilou010

XLDnaute Occasionnel
Bonjour,
Je joins un fichier à ma question c'est plus parlant...
En fait, j'ai fait 2 macros et je souhaiterai que la deuxième s'exécute en temps réel après la première.
C'est pas très clair, j'espère qu’avec le fichier vous identifierai ce que je souhaite faire.
Bien sûr si vous avez une autre solution je suis preneur.
Je vous remercie de vous pencher sur ma question.
Cdt
Pilou
 

Pièces jointes

  • Pilou.xlsm
    22.5 KB · Affichages: 14
Solution
Bonjour pilou01,

Il y a encore un caractère interdit c'est l'apostrophe si elle est placée à gauche ou à droite du nom.

Donc utilisez cette macro :
Code:
Sub dupliquer()
Dim interdit$, nomEvalue$, w As Worksheet, refus As Boolean, i%
interdit = "\/?*[]" 'caractères interdits
Do
    nomEvalue = InputBox("Nom du candidat", , nomEvalue)
    If nomEvalue = "" Then Exit Sub
    nomEvalue = Left(nomEvalue, 31) '31 caractères maximum
    Set w = Nothing
    On Error Resume Next: Set w = Sheets(nomEvalue): On Error GoTo 0
    refus = Not w Is Nothing
    For i = 1 To Len(interdit)
        If InStr(nomEvalue, Mid(interdit, i, 1)) Then refus = True: Exit For
    Next
Loop While refus Or Left(nomEvalue, 1) = "'" Or...

job75

XLDnaute Barbatruc
Bonsoir pilou010,

La macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code ) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Me.Name <> "Original" And [E2] <> "" And [E3] <> "" Then renommer 'lance la macro
End Sub
Elle s'exécute quand on modifie ou valide une cellule quelconque.

Nota : revoir la macro dupliquer car il y a bien sûr un bug si le nom entré est le nom d'une feuille existante.

A+
 

Pièces jointes

  • Pilou(1).xlsm
    21.4 KB · Affichages: 6

job75

XLDnaute Barbatruc
Bonsoir pilou010,

La macro dupliquer améliorée pour éliminer aussi les caractères interdits :
VB:
Sub dupliquer()
Dim interdit$, nomEvalue$, w As Worksheet
interdit = "\/?*[]" 'caractères interdits
Do
    nomEvalue = InputBox("Nom du candidat", , nomEvalue)
    For i = 1 To Len(interdit): nomEvalue = Replace(nomEvalue, Mid(interdit, i, 1), ""): Next 'épuration
    If nomEvalue = "" Then Exit Sub
    nomEvalue = Left(nomEvalue, 31) '31 caractères maximum
    Set w = Nothing
    On Error Resume Next: Set w = Sheets(nomEvalue): On Error GoTo 0
Loop While Not w Is Nothing
Sheets("Original").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Range("_saisie").ClearContents
ActiveSheet.Name = nomEvalue
ActiveSheet.Range("_candidat").Value = nomEvalue
End Sub
Bonne nuit.
 

job75

XLDnaute Barbatruc
Bonjour pilou01,

Il y a encore un caractère interdit c'est l'apostrophe si elle est placée à gauche ou à droite du nom.

Donc utilisez cette macro :
Code:
Sub dupliquer()
Dim interdit$, nomEvalue$, w As Worksheet, refus As Boolean, i%
interdit = "\/?*[]" 'caractères interdits
Do
    nomEvalue = InputBox("Nom du candidat", , nomEvalue)
    If nomEvalue = "" Then Exit Sub
    nomEvalue = Left(nomEvalue, 31) '31 caractères maximum
    Set w = Nothing
    On Error Resume Next: Set w = Sheets(nomEvalue): On Error GoTo 0
    refus = Not w Is Nothing
    For i = 1 To Len(interdit)
        If InStr(nomEvalue, Mid(interdit, i, 1)) Then refus = True: Exit For
    Next
Loop While refus Or Left(nomEvalue, 1) = "'" Or Right(nomEvalue, 1) = "'"
Sheets("Original").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Range("_saisie").ClearContents
ActiveSheet.Name = nomEvalue
ActiveSheet.Range("_candidat").Value = nomEvalue
End Sub
Edit : il est mieux de ne pas supprimer les caractères interdits, c'est à l'utilisateur de le faire.

A+
 

Pièces jointes

  • Pilou(2).xlsm
    22.8 KB · Affichages: 2
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 135
Messages
2 116 628
Membres
112 816
dernier inscrit
Nounours_59