Récupérer le nom de la dernière feuille pour la comparer
Résolu
Yoyo01000
Messages postés
1720
Statut
Membre
-
Yoyo01000 Messages postés 1720 Statut Membre -
Yoyo01000 Messages postés 1720 Statut Membre -
Bonsoir le forum et meilleurs voeux !
Je bloque sur un sujet d'où mon appel à votre aide :
Via VBA, je génère la copie d'une feuille avec ses données.
Dans la feuille générée, étant la dernière à droite, celle-ci à comme valeur le Nom de la personne et la date du jour.
Comme ceci : NOM-09 janv
De ce côté, c'est OK.
Cependant, si je génère une nouvelle feuille le jour-même, bien évidemment j'ai une erreur, puisqu'il est impossible d'avoir 2 feuilles avec le même nom.
Au moment de générer une seconde feuille le jour-même, il faudrait que je trouve une astuce pour qu'elle soit toujours sous la forme NOM-09 janv en ajoutant par exemple (2).
Mais je ne trouve pas la solution pour que le code ajoute (2) si la feuille générée a déjà le même nom que la dernière feuille de droite...
Voici le code complet :
Et le code concernant ma requête :
Merci d'avance, le forum !
Je bloque sur un sujet d'où mon appel à votre aide :
Via VBA, je génère la copie d'une feuille avec ses données.
Dans la feuille générée, étant la dernière à droite, celle-ci à comme valeur le Nom de la personne et la date du jour.
Comme ceci : NOM-09 janv
De ce côté, c'est OK.
Cependant, si je génère une nouvelle feuille le jour-même, bien évidemment j'ai une erreur, puisqu'il est impossible d'avoir 2 feuilles avec le même nom.
Au moment de générer une seconde feuille le jour-même, il faudrait que je trouve une astuce pour qu'elle soit toujours sous la forme NOM-09 janv en ajoutant par exemple (2).
Mais je ne trouve pas la solution pour que le code ajoute (2) si la feuille générée a déjà le même nom que la dernière feuille de droite...
Voici le code complet :
Sub Copie_Colle_Fiche() Sheets("VIERGE").Visible = True Range("P4").Value = Now 'Date manuelle : 'If Range("P4").Value = "" Then ' MsgBox "Champ [Date] obligatoire", vbExclamation ' Range("P4").Interior.Color = 255 'Else ' Range("P4").Interior.Color = RGB(255, 255, 255) 'End If If Range("A6").Value = "" Then MsgBox "Champ [Description de l'ICP] obligatoire", vbExclamation Range("A6").Interior.Color = 255 Else Range("A6").Interior.Color = RGB(255, 255, 255) End If If Range("A13").Value = "" Then MsgBox "Champ [Solution proposée] obligatoire", vbExclamation Range("A13").Interior.Color = 255 Else Range("A13").Interior.Color = RGB(255, 255, 255) End If If Range("A6").Value = "" Or Range("A13").Value = "" Then Exit Sub End If If Range("A6").Value <> "" And Range("A13").Value <> "" Then Sheets("VIERGE").Copy After:=Sheets(Sheets.count) ActiveSheet.Name = Left([D4], InStr(1, [D4], " ") - 1) & "-" & Format(Date, "dd mmm") Columns("AC:AR").Select Selection.EntireColumn.Hidden = True Columns("AT:BG").Select Selection.EntireColumn.Hidden = False Range("B2").Select Sheets("VIERGE").Range("P4") = "" Sheets("VIERGE").Range("A6") = "" Sheets("VIERGE").Range("A13") = "" End If
Et le code concernant ma requête :
If Range("A6").Value <> "" And Range("A13").Value <> "" Then Sheets("VIERGE").Copy After:=Sheets(Sheets.count) ActiveSheet.Name = Left([D4], InStr(1, [D4], " ") - 1) & "-" & Format(Date, "dd mmm")
Merci d'avance, le forum !
Configuration: Windows / Chrome 97.0.4692.71
A voir également:
- Récupérer le nom de la dernière feuille pour la comparer
- Dernière version ccleaner gratuit français - Télécharger - Nettoyage
- Recuperer message whatsapp supprimé - Guide
- Supprimer la dernière page word - Guide
- Bruler feuille de laurier - Guide
- Dernière version chrome - Accueil - Applications & Logiciels
2 réponses
Bonsoir,
Dans un premier temps, avant de créer votre nouvelle feuille vous récupérez la date de la feuille en cours et si même date du jour alors vous créer un nouveau nom que vous utiliserez pour modifier le nom de la feuille copiée.
Dans un premier temps, avant de créer votre nouvelle feuille vous récupérez la date de la feuille en cours et si même date du jour alors vous créer un nouveau nom que vous utiliserez pour modifier le nom de la feuille copiée.
Bonsoir à vous deux
Essaye de compléter ainsi ton code :
Cdlmnt
Via
Essaye de compléter ainsi ton code :
Sheets("VIERGE").Copy After:=Sheets(Sheets.Count) nbf = 0 ' remise à 0 variable ' nom feuille possible Nom + date nom = Left([D4], InStr(1, [D4], " ") - 1) & "-" & Format(Date, "dd mmm") ' longueur de la chaine nom lng = Len(nom) 'boucle depuis 5 feuilles avant la dernière jusqu'à la dernière A MODIFIER EN + ou en - SI NECESSAIRE For n = Sheets.Count - 5 To Sheets.Count ' si la gauche du nom de la feuille est identique au nom possible on incrémente la variable nbf de 1 If Left(Sheets(n).Name, lng) = nom Then nbf = nbf + 1 Next 'Si une ou des feuilles existent avec déjà ce même début de nom alors on ajoute au nom possible entre parenthèses le n° de la prochaine feuille (= nbre de feuilles avec même début +1) If nbf > 0 Then nom = nom & " (" & nbf + 1 & ")" ActiveSheet.Name = nom
Cdlmnt
Via
j'avais commencé à me pencher sur cette idée, après avoir posté mon sujet sur le forum !
C'est en effet une alternative qui aurait pu me simplifier la tâche !
Mais au final, je vais utiliser le code de via55.
Je garde toutefois cette idée, pour la mettre en oeuvre, et peut-être l'utiliser aussi.
Merci à toi, bonne journée.