find, exist?

  • Initiateur de la discussion xam
  • Date de début
X

xam

Guest
bonjour, je débute tout juste avec les macros dans excel.

je souhaite créer une feuille automatiquement nommé par l'utilisateur. cependant si cette feuille existe deja, pif paf et hop vilaine erreur vb. je veux donc que cette ancienne feuille soit suprimée pour laisser place a la nouvelle...
voici mon code vba, qui marche pas des masses mais bon..
merci


Sub selection_date()
Dim annee As Integer

selecfeuille = InputBox("saisir l'année désirée", "yo", 2000)
If Application.Sheets.find.selecfeuille = true Then MsgBox ("cette feuille est déja créée") Else
Application.Sheets.Add after:=Sheets.Item(Sheets.Count), Type:=xlWorksheet
Application.ActiveSheet.Name = selecfeuille

End Sub
 
@

@Christophe@

Guest
Bonjour

Voici pour toi un code tous fais, tu n'as plus qu'as la copie coller dans un module:

Sub NouvelleFeuille()

Dim Sh As Worksheet
Dim Reponse As String
Dim MonNom As String
Dim BonNom As Boolean
Dim LeString
LeString = ":\/?*[]"

Do
BonNom = True
Reponse = InputBox("Quel nom désirez-vous donner à la" _
+ vbCrLf + "nouvelle feuille de votre classeur?", _
"Baptisez votre feuille ", MonNom)
If Reponse <> "" Then
'Vérifier que le nom n'existe pas déjà...
For a = 1 To ActiveWorkbook.Worksheets.Count
If UCase(Reponse) = UCase(Worksheets(a).Name) Then
supp = MsgBox( _
"Vous possédez une feuille portant déjà ce nom," _
+ vbCrLf + vbCrLf + _
"Désirez-vous la remplacer?.", vbYesNo + vbOKOnly, _
"Nom existant déjà")
If supp = vbYes Then
Application.DisplayAlerts = False
Worksheets(Reponse).Delete
Application.DisplayAlerts = True
Exit For
Else
BonNom = False
MonNom = Reponse
Exit For
End If
End If
Next

'Vérifier que le nombre de caractères du nom ne dépassent 31...
If Len(Reponse) > 31 Then
MsgBox "Le nombre de caractères (" & _
Len(Reponse) & ") de votre nom dépasse" _
+ vbCrLf + " celui permis (31) par excel.", _
vbCritical + vbInformation, "Nom trop long"
BonNom = False
MonNom = Reponse
End If

'Vérifier l'emploi de caractères interdits...dans le nom
For a = 1 To Len(LeString)
If InStr(1, Reponse, Mid(LeString, a, 1), vbTextCompare) > 0 Then
MsgBox "Les caractères suivants: " & _
LeString & " sont interdits" _
+ vbCrLf + "dans le nom d'une feuille.", _
vbCritical + vbOKOnly, "Caractère interdit"
BonNom = False
MonNom = Reponse
Exit For
End If
Next
Else
Exit Sub
End If
Loop Until BonNom = True

Set Sh = Worksheets.Add(after:=Worksheets(Worksheets.Count))
Sh.Name = Reponse

End Sub


Ce code vérifie si la feuille existe, si oui, il te demande si tu veux la remplacer, il vérifie aussi que le nom que tu donnes à ta feuille soit valable

Voila

@Christophe@
 

Discussions similaires

G
Réponses
3
Affichages
826
G

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87