[Excel] Help sur une macro

seb59bes Messages postés 4 Date d'inscription vendredi 25 septembre 2009 Statut Membre Dernière intervention 9 octobre 2009 - 8 oct. 2009 à 16:12
seb59bes Messages postés 4 Date d'inscription vendredi 25 septembre 2009 Statut Membre Dernière intervention 9 octobre 2009 - 9 oct. 2009 à 14:22
Bonjour tout le monde

Je suis grand débutant en VBa, au file de mes recherches sur la toile j'ai réalisé des codes sans prétentions, avec le Visual Basic, qui me permettent de gagner un peu de temps sur Excel dans le cadre de mon travail.
Je suis coincé sur une macro et je sollicite votre aide .

Descriptif:
Un bouton doit générer une nouvelle feuille dans mon classeur en lui donnant le nom d'une valeur contenue dans une cellule. Je dois créer une condition qui permette de vérifier si la feuille n'existe pas déjà. J'ai trouvé au cours de mes recherches des indices qui m'ont permis d'élaborer ce code test:

Sub BoutonGénérateur()

Dim WS As Worksheet
For Each WS In ActiveWorkbook.Worksheets
' Permet de faire la recherche sur toutes les feuilles du classeur

If WS.Name = "Valeur de la celulle" Then
' La condition, je ne sais par quoi remplacer "Valeur de la celulle = coordonnées de la celulle qui donne le nom de la feuille"

MsgBox "Ce réferentiel existe déjà"
' Message envoyer si la feuille existe

Else
MsgBox "Ce réferentiel n'existe pas"

' Message si la condition n'est pas respectée, ce message sera remplacé par le code de création d'un nouvel onglet dont le nom est tiré de la valeur de la celulle précédemment cité

Exit For
End If
Next
End Sub


If WS.Name = "Valeur de la celulle" Then

Dans cette partie, ne sachant pas comment remplacer "Valeur de la celulle" j'ai réaliser le test avec un nom fixe d'onglet, la macro n'entre pas en débogage seulement elle ne réalise pas ce que j'attends, j'obtiens à tous les coups le message "Ce référentiel n'existe pas" meme si la feuille existe...
J'espère avoir été clair, sinon n'hésitez pas Vous l'aurez sans doute compris j'avance par tatonnement et vous demandes d'etre indulgeant Merci

6 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
8 oct. 2009 à 16:49
Salut,

c'est pas du VB.net ... ben non puisque c'est de l'excel

Bref tu n'es pas dans le bon theme ... donc la prochaine fois fait gaffe quand même!

Pour récupérer le contenu d'une cellule on fait comme ceci:

Range("A1").Value (cas générale)
Range("A1").Text
ActiveSheet.Cells(1,1).Value
etc.

Le moyen le plus rapide pour vérifier si une feuille existe est ,plutot que de boucler sur toutes les feuilles, de tenter de selectionner la feuille, Si elle existe pas de probleme on continu par contre si elle n'existe pas ben... plantage .
Ne nous affolons pas il suffit en fait d'anticiper ce plantage et de le gerer.

Un bon exemple vaut tout aussi bien qu'un long discours... si si :

On Error Resume Next 'ici on anticipe
Worksheets(Range("A1").Value).select 'ici on tente la selection
If Not Err=0 then Msgbox "La feuille " & Range("A1").Value & " n'existe pas ! ", VbExclamation ' ici on gere

A savoir que Err renvois le numeros de l'erreur si erreur il y a ou 0 si pas d'erreur

Voila

A+
0
seb59bes Messages postés 4 Date d'inscription vendredi 25 septembre 2009 Statut Membre Dernière intervention 9 octobre 2009
8 oct. 2009 à 19:08
Re
Désolé pour le mauvais thème

Merci de ton aide, alors je viens de tester ton code qui me donne exactement le même résultat que le miens, c'est à dire que le message apparait même si la feuille existe. Y-a t'il un morceau de code à ajouter?

Pour rappel, le but de cette macro est de créer une feuille à condition qu'elle n'éxite pas, une cellule (A4) sert de référence pour nommer la feuille à créer.
Clique sur le bouton:
Sub Macro
Vérifie qu'aucune feuille ne porte le nom contenue dans la celulle A4
- Si la feuille existe -> message "la feuille (valeur A4) existe ! (clique "ok" et rien ne se fait)
- Si elle n'éxiste pas -> crétion d'une nouvelle feuille (nom = valeur A4)
End Sub
0
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
9 oct. 2009 à 10:56
Hello,
Que contient la cellule A4 sur laquelle tu testes ? Quelle type de données ?

BR

USERRRQI115
Simple user
Great brain
0
seb59bes Messages postés 4 Date d'inscription vendredi 25 septembre 2009 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 11:50
Hey
La cellule A4 est un chiffre qui correspond à une année (aucune formule pour cette cellule, il s'agit juste d'un chiffre à rentrer manuellement)

Voila
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
9 oct. 2009 à 11:58
Re,

je crois que :"Worksheets(Range"A1").Value).select"
génère la selection d'une feuille via son n° d'index.
Peut être que cela fonctionnerait :
Worksheets("" & Range("A1").Value & "").select
BR
USERRRQI115
Simple user
Great brain
0
seb59bes Messages postés 4 Date d'inscription vendredi 25 septembre 2009 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 14:22
Re
Great brain indeed !!
Tu as trouvé c'était bien le n° d'index qui posait souci, merci à vous 2 pour votre aide

Voici donc le code entier si par hasard ca interesse quelqu'un:
Sub Test()

On Error Resume Next
Worksheets("" & Range("A4").Value & "").Select
If Not Err = 0 Then
Sheets("Calendrier").Select
Sheets("Calendrier").Copy After:=Sheets(1)
ActiveSheet.Name = Range("A4")
End If
End Sub

Bye
0
Rejoignez-nous