Récupérer le nom de la dernière feuille pour la comparer
Résolu
Yoyo01000
Messages postés
1720
Date d'inscription
Statut
Membre
Dernière intervention
-
Yoyo01000 Messages postés 1720 Date d'inscription Statut Membre Dernière intervention -
Yoyo01000 Messages postés 1720 Date d'inscription Statut Membre Dernière intervention -
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 !
--
Pensez au "merci" et au "résolu" quand le sujet l'est.
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
--
Pensez au "merci" et au "résolu" quand le sujet l'est.
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
- Supprimer la dernière page word - Guide
- Récupérer compte yahoo sans numéro de téléphone - Guide
- Recuperer message whatsapp supprimé - Guide
- Nom pour facebook stylé - Guide
2 réponses
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.