Travail sur nom des feuilles

  • Initiateur de la discussion thomas
  • Date de début
T

thomas

Guest
Bonjour le forum,

Quand je lance une macro, une feuille est crée avec pour nom "Sorties " & Date du jour. ex: "Sorties 16-04-2003".
Si Je relance la macro, j'aimerai que celle-ci change le nom de la feuille qui vient d'etre crée en "Sorties 16-04-2003 (1)" et crée une autre feuille avec "Sorties 16-04-2003 (2)"

Dans mon code avant, je détruisais la feuille si elle existait déjà.

Merci d'avance, thomas.
 

Pièces jointes

  • Avant.zip
    394 bytes · Affichages: 20
  • Avant.zip
    394 bytes · Affichages: 17
  • Avant.zip
    394 bytes · Affichages: 19
@

@+Thierry

Guest
Salut Thomas,

Si tu veux avoir une réponse appropriée, il serait souhaitable d'avoir la macro complète et non cet extrait de quelques lignes de ton code, car là çà fait un peu rébus à résoudre...

Voilà déjà pour la partie renommer le nom de la feuille existante (j'ai été obligé de compléter la macro...)

Option Explicit
Sub FeuilleDuJour()
Dim NomFeuille As String
Dim Retour As Byte
Dim i As Byte
Dim a As Byte

NomFeuille = "Sorties " & Format(Now, "DD-MM-YYYY")
a = 1

For i = 1 To Worksheets.Count
Worksheets(i).Activate
If NomFeuille = ActiveSheet.Name Then
Retour = MsgBox(NomFeuille & " existe dejà. Elle va être nommée: " & _
NomFeuille & " (" & a & ")" & _
Chr(10) & "Voulez-vous continuer?", vbOKCancel + vbQuestion + vbDefaultButton2)
If Retour = vbOK Then
Worksheets(i).Name = NomFeuille & " (" & a & ")"
Else
Exit Sub
End If
End If
Next i

End Sub


Pour la partie Ajout/création de feuille.. Je ne peux rien envisager sans savoir comment tu t'y prends...

Bon aprèm
@+Thierry
 
T

thomas

Guest
Re le forum, bonjour Thierry
Merci de t'être pencher sur mon probleme,

En fait, je lance une macro qui va chercher des donnees dans une base access et qui met ces donnees dans une feuille avec comme nom la date du jour. Chaque execution de la macro crée une feuille. Donc, si je la lance plusieurs fois le meme jour, j'aurai des problèmes. C'est pour ca que je dois distinguer chaque nom de feuille.

Résultat après une exécution pour l'utilisateur de la macro un jour J:
création de la feuille "Sorties JourJ"

après 2 exécutions le même jour :
renommage de "Sorties JourJ" en "Sorties JourJ (1)" (optionnel)
création de la feuille "Sorties JourJ (2)"

après 3 exécutions le même jour :
création de la feuille "Sorties JourJ (3)"

Après 3 execution, j'ai trois feuilles "Sorties JourJ (1)" ,"Sorties JourJ (2)","Sorties JourJ (3)".

Le chiffre entre parenthèses s'incrémente.

Est-ce que tu saisis un peu mieux ce que je veux faire?

Merci pour ton aide.
 
@

@+Thierry

Guest
Oui oui j'ai déjà saisi depuis le premier post !! lol

C'est pas çà mon problème... C'est de savoir comment ta feuille est généré et surtout à quelle moment !!!

En partant du puzzle que tu donnes...

J'imagine que ta macro a déjà tournée et que ton classeur comporte une feuille :
Sorties 16-04-2003...

Ci dessus je t'ai mis le moyen de renommer la feuille si tu fait tourner une cette macro alors que Sorties 16-04-2003... Elle sera automatiquement renommée "Sorties 16-04-2003 (1)"... ce qui me manque c'est la partie qui crée la feuille, sinon je l'invente... mais çà m'étonnerait que çà puisse te convenir !!

Quand à générer un compteur du nombre de fois ou tu fais tourner cette macro... Humm c'est un epu usine à gaz et pas forcément fiable...

@suivre...
@+Thierry
 
T

thomas

Guest
Re Thierry,

L'utilisateur qui utilisera le fichier excel se comporte de la manière suivante : il entre des donnees, lance une macro (bouton) pour entrer les donnees dans la base access, lance une macro (bouton) pour appliquer la moulinette access, et enfin (ce qui nous interesse) lance une macro pour avoir une feuille restitution de donnees !
Il appuie sur le bouton sortie et la feuille "Sorties 16-04-2003". Je déclenche donc ma macro par un bouton.

Je te joints ma macro qui va chercher les donnees de sorties.

Désolé, j'ai du mal à expliquer par écrit ;)
Merci Thierry.
 

Pièces jointes

  • Code.zip
    918 bytes · Affichages: 20
  • Code.zip
    918 bytes · Affichages: 21
  • Code.zip
    918 bytes · Affichages: 20
S

sousou

Guest
Pas si simple, mais jette un oeil sur ceci !

Le principe:
Utiliser le traitement d'erreur quand tu nommes une feuille du même nom qu'une autre feuille.
Si il y a une erreur, je regarde toutes les feuilles qui pourraient porter le même nom sans l'incrément '(1)'
Cela me donne un nouvelle incrémént que je concatène.

Dans l'exemple, je suis dans la feuil2, et j'essaie de la renommer en "feuil1".
Il renomme la feuille en feuil1 (1)
ensuite, insère une autre feuille en position deux et relance, ...feuil1 (2)

tous cela à adapter à ton appli.


Sub test()
Set mafeuille = ThisWorkbook.Worksheets(2)
nomfeuille = "Feuil1"


On Error Resume Next
mafeuille.Name = nomfeuille

If Error <> "" Then
On Error GoTo 0
For Each feuille In ThisWorkbook.Worksheets
If Left(feuille.Name, Len(nomfeuille)) = nomfeuille Then
inc = inc + 1
End If
Next
mafeuille.Activate
mafeuille.Name = nomfeuille & "(" & inc & ")"
End If
End Sub
 
T

thomas

Guest
Re à tous membres du forum, thierry et sousou !

Super sousou, ce que tu m'as donné, m'a servi de base pour faire ce que je voulais. Je t'en remercie.

Je donne mon code, au cas ou ca interreserait ceux qui voudraient faire pareil que moi :

Application.DisplayAlerts = False

nomfeuille = "Sorties " & format(Now, "DD-MM-YYYY")

For Each feuille In ThisWorkbook.Worksheets
If Left(feuille.Name, Len(nomfeuille)) = nomfeuille Then
inc = inc + 1
If Len(feuille.Name) = Len(nomfeuille) Then
feuille.Name = nomfeuille & " (1)"
End If
End If
Next

If inc = 0 Then
Worksheets.Add.Name = nomfeuille
Else
Worksheets.Add.Name = nomfeuille & " (" & inc + 1 & ")"
End If


Merci encore,
@+, tom.
 

Discussions similaires

Statistiques des forums

Discussions
312 320
Messages
2 087 227
Membres
103 497
dernier inscrit
JP9231