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

Nom de fichier = contenu de cellule

2 réponses
Avatar
Christian de BXL
Bonjour à tous,
Pour enregistrer facilement des classeurs avec le contenu de deux cellules
et un préfixe "fs ", j'utilise la macro suivante (trouvée à partir d'une
réponse dans ce forum)

Sub zaza()
On Error Resume Next
ChDrive "G"
ChDir "G:\Mes Documents\essais enregistrement\"
Application.ActiveWorkbook.SaveAs ("fs " & [B3] & " " & [B5] & ".xls")
If Err.Number <> 0 Then MsgBox Error(Err)
End Sub

Comment mettre un message d'erreur blocant la procédure si les cellule B3 et
B5 sont vides.
Merci à vous
Christian

2 réponses

Avatar
MichDenis
Tu copies ce qui suit dans un module standard :

La fonction t'assure que les caractères du nom sont acceptés.
Tu dois adapter le nom de la feuille dans la procédure.

'-------------------------------
Sub zaza()

On Error Resume Next
ChDrive "G"
ChDir "G:Mes Documentsessais enregistrement"
With ThisWorkbook
With .Worksheets("Feuil1") ' Nom à adapter
If .Range("B3") <> "" _
And Detect_Bad_Character(.Range("B3")) = True _
And .Range("B5") <> "" _
And Detect_Bad_Character(.Range("B5")) = True Then
ThisWorkbook.SaveAs ("fs " & [B3] & " " & [B5] & ".xls")
Else
MsgBox "Un caractère interdit """"["", ""]"", """",""/""," & _
"""?"", ""*"", "":""" & vbCrLf & _
"a été saisi en B3 ou B5 de la feuille " & .Name _
& vbCrLf & " ou une de ces cellules est vide.", _
vbCritical + vbOKOnly, "Attention"
End If
End With
End With

End Sub
'-------------------------------
Function Detect_Bad_Character(rg As Range) As Boolean
Dim X As Variant
X = Array("[", "]", "", "/", "?", "*", ":")
For Each elt In X
If InStr(1, rg.Text, elt, vbTextCompare) <> 0 Then
Detect_Bad_Character = False
Exit Function
End If
Next
Detect_Bad_Character = True
End Function
'-------------------------------



"Christian de BXL" a écrit dans le message de news:

Bonjour à tous,
Pour enregistrer facilement des classeurs avec le contenu de deux cellules
et un préfixe "fs ", j'utilise la macro suivante (trouvée à partir d'une
réponse dans ce forum)

Sub zaza()
On Error Resume Next
ChDrive "G"
ChDir "G:Mes Documentsessais enregistrement"
Application.ActiveWorkbook.SaveAs ("fs " & [B3] & " " & [B5] & ".xls")
If Err.Number <> 0 Then MsgBox Error(Err)
End Sub

Comment mettre un message d'erreur blocant la procédure si les cellule B3 et
B5 sont vides.
Merci à vous
Christian
Avatar
Ange Ounis
Perso, je commencerais par tester si les cellules B3 et B5 sont renseignées et
sinon j'arrêterais tout après l'avoir signalé :

'''''''''''''''''
Sub zaza()
If Range("B3").Value = "" Or Range("B5").Value = "" Then
MsgBox "Cellule(s) B3 et/ou B5 non renseigné(e)s."
Exit Sub
End If
On Error Resume Next
ChDrive "G"
ChDir "G:Mes Documentsessais enregistrement"
Application.ActiveWorkbook.SaveAs ("fs " & [B3] & " " & [B5] & ".xls")
If Err.Number <> 0 Then MsgBox Error(Err)
End Sub
'''''''''''''''''

----------
Ange Ounis
----------

Bonjour à tous,
Pour enregistrer facilement des classeurs avec le contenu de deux cellules
et un préfixe "fs ", j'utilise la macro suivante (trouvée à partir d'une
réponse dans ce forum)

Sub zaza()
On Error Resume Next
ChDrive "G"
ChDir "G:Mes Documentsessais enregistrement"
Application.ActiveWorkbook.SaveAs ("fs " & [B3] & " " & [B5] & ".xls")
If Err.Number <> 0 Then MsgBox Error(Err)
End Sub

Comment mettre un message d'erreur blocant la procédure si les cellule B3 et
B5 sont vides.
Merci à vous
Christian