Code VBA pour onglet en doublon

Résolu/Fermé
gilou - 12 janv. 2010 à 14:50
 gilou - 14 janv. 2010 à 08:43
Bonjour,
voici mon petit probleme de code vba
j'ai crée le code suivant qui renomme l'onglet
private...............
if range("a1")="" then exit sub
activesheet. name = range("a1"). text (text c'est la date)
end sub
comme il s'agit de main courante et , qu'il peut y en avoir lplusieurs le meme jour j'ai pensé à inter caler une ligne qui permettrai de signaler l'erreur par un (msg box) qui proposerai de modifier la saisie ;par exmple
feuille 1 renommée en 01/01/2010
feuille2 pas de chance ,elle tombe à la meme date donc msgbox qui propose " cette date est deja utilisée je vous propose 01/01/2010 2 puis ok
si par hasard il y en a 3 => 01/01/2010 3 et ainsi de suite
deja merci
A voir également:

2 réponses

Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
12 janv. 2010 à 21:49
Où est la question ?
Personnellement, je n'afficherais pas de MsgBox : s'il y a 50 mains courantes à une date donnée, j'aurais des craintes pour les nerfs de l'utilisateur ; j'utiliserais un incrément automatique.
0
bonjour
d'accord ;alors peux tu me fournir une solution d'incrementation automatique car j'ai essayé
en utilisant la fonction si en concatainant un n° mais je perd le format date
sinon au pire des cas indique moi comment rediger en VBA : " si la valeur d6 de la feuille active corrspond au nom de la feuille precedente alors valeur d6 & (c'est la que çà se complique): nb de feuil portant la valeur d6 de la la feuil acitve +1 ; de maniere a obtenir la meme date que la feuille precedente & 1ou 2 ou 3 selon
ps il n'y a jamais plus de 10 feuilles renommées
merci a+
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
13 janv. 2010 à 10:10
Salut,
Tu boucles sur toutes le feuilles du classeur en incrémentant une variable compteur lorsque VB trouve la valeur en D6 :

Dim ws As Worksheet
Dim cpt As Integer
Dim valeur As String
valeur = ActiveSheet.Range("D6").Value
For Each ws In ThisWorkbook.Worksheets
If ws.Range("D6") = valeur Then
cpt = cpt + 1
End If
Next
If cpt = 1 then
ActiveSheet.Name = Range("D6").Text
Else
ActiveSheet.Name = Range("D6").Text & " " & cpt
End If
0
bonjour et merci
après qques soucis d'instllation car toutes mes feuilles n'etaient pas vierges en d6 a cause d'essais , le resultat est bon par precaution j'ai rajouté une lgne avec " if range("d6")= "" then exit sub ainsi je n'ai plus de message d'erreur , tu peux mettre en resolu encore merci et bonne journée
0