Plusieurs demandes sur la création d'un classeur ...

Hessef

XLDnaute Nouveau
Bonjour,
Je vous expose mon problème ... Mon boss m'a demandé de lui faire un document Excel répertoriant tous les incidents d'une copro. Jusque la pas de problème mais il veut quelque chose d'automatisé, donc des macros. Et ... je n'y connais rien ! J'en suis au début et ne sais même pas dans quel ordre commencer.
J'alimenterai ce post en fonction de mon évolution si vous le permettez.

Première question, je voudrai savoir comment donner le nom d'une feuille en fonction du texte inscrit dans une cellule, soit "A2" a chaque feuille dupliquée ?
Je vous remercie par avance et vous demande de ne pas oublier que vous parlez a une personne qui ne comprend pas forcément. Je suis a votre disposition pour de plus amples questions.

Seconde question, ma fiche "vierge" que j'ai nommé "matrice" doit comporter un bouton qui la duplique, met sa copie à la suite mais devant les plus anciennes ; doit remplir la cellule "A2" par un numéro de série de type "001/18" (pour premier incident signalé en 2018) qui doit se poursuivre automatiquement de fait a chaque clic (002/18, 003/18...) et donc renommer ma feuille automatiquement (grace aux conseils de job75) ; se colorer en orange (pour plus de visibilité).
Le bouton ne doit pas être dupliqué mais peut etre mis ailleurs si possible.
Voila la prochaine étape ou je flanche. Merci d'avance !

Les étapes suivantes étant de faire en sorte que l'onglet se colore en vert lorsque une des cellule de la colonne "M" est noté terminé, puis de verouiller la feuille matrice et de la rendre invisible.
Restera la "consolidation" ou "tri" selon différents critères ... Et normalement ça sera terminé !
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Hessef, bienvenue sur XLD, salut Bernard,

Pour la 1ère question.

Touches Alt+F11 pour aller dans VBA puis en haut à gauche double-clic sur ThisWorkbook.

Et collez-y cette macro qui s'exécute automatiquement quand on modifie A2 :
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If CStr([A2]) <> "" Then
    On Error Resume Next
    Sh.Name = CStr([A2])
    If Sh.Name <> CStr([A2]) Then MsgBox "Le nom en A2 n'est pas un nom de feuille valide." & vbLf & vbLf & _
        "Vérifiez qu'il ne contient pas de caractère interdit et qu'une autre feuille ne porte pas déjà ce nom.", , "Erreur"
End If
End Sub
A+
 

Hessef

XLDnaute Nouveau
Bonjour Hessef, bienvenue sur XLD, salut Bernard,

Pour la 1ère question.

Touches Alt+F11 pour aller dans VBA puis en haut à gauche double-clic sur ThisWorkbook.

Et collez-y cette macro qui s'exécute automatiquement quand on modifie A2 :
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If CStr([A2]) <> "" Then
    On Error Resume Next
    Sh.Name = CStr([A2])
    If Sh.Name <> CStr([A2]) Then MsgBox "Le nom en A2 n'est pas un nom de feuille valide." & vbLf & vbLf & _
        "Vérifiez qu'il ne contient pas de caractère interdit et qu'une autre feuille ne porte pas déjà ce nom.", , "Erreur"
End If
End Sub
A+

Magnifique et merci, je n'ai pas tout compris mais ca marche !
 

job75

XLDnaute Barbatruc
Re,

Pour créer une nouvelle feuille on peut utiliser cette macro :
Code:
Sub NouvelleFeuille()
'se lance par les touches de raccourci Ctrl+N
Dim w As Worksheet, n&, vis%
For Each w In Worksheets
    If w.Name Like "*###-" & Format(Date, "yy") Then If Val(w.Name) > n Then n = Val(w.Name)
Next
Application.ScreenUpdating = False
With Sheets("Matrice")
    vis = .Visible 'mémorise
    .Visible = xlSheetVisible 'au cas où la feuille est masquée
    .Copy After:=Sheets(Sheets.Count)
    .Visible = vis
End With
ActiveSheet.[A2] = Format(n + 1, "000-") & Format(Date, "yy") 'pourquoi utiliser A2 ?
'ActiveSheet.Name = Format(n + 1, "000-") & Format(Date, "yy") 'plus simple non ?
ActiveSheet.Tab.ColorIndex = 44 'orange
End Sub
Je ne vois pas l'intérêt d'entrer le nom de la feuille en A2 : il suffit de nommer la feuille créée directement.

Fichier joint.

A+
 

Pièces jointes

  • Fiche de suivi 2018(1).xlsm
    26 KB · Affichages: 28

Hessef

XLDnaute Nouveau
Alors c'est magnifique, encore mieux que ce que je voulais !
Cependant, ce fichier destiné a des utilisateurs lambda, souvent d'un certain age, est il possible d'affecter le raccourci "ctrl+N" a un bouton dans la barre de menu ou alors dans une fenêtre "pop" du genre "voulez vous ouvrir une nouvelle demande ? .... oui / non".
Les étapes suivantes étant de faire en sorte que l'onglet se colore en vert lorsque une des cellule de la colonne "M" est noté terminé, puis de verouiller la feuille matrice et de la rendre invisible.
Restera la "consolidation" ou "tri" selon différents critères ... Et normalement ça sera terminé !
Il est dur pour moi de comprendre le code VBA mais le travail que vous réalisez m'aide un peu. Le langage reste obscure, si vous avez des ouvrages ou des sites a me recommander pour un débutant, n'hésitez pas a me conseiller.
Encore 1000 mercis
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Hessef, le forum,
Les étapes suivantes étant de faire en sorte que l'onglet se colore en vert lorsque une des cellule de la colonne "M" est noté terminé, puis de verouiller la feuille matrice et de la rendre invisible.
La macro complétée dans ThisWorkbook :
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Application.CountIf(Sh.[M:M], "T*") Then Sh.Tab.ColorIndex = 4 'onglet vert
If CStr([A2]) <> "" Then
    On Error Resume Next
    Sh.Name = CStr([A2])
    If Sh.Name <> CStr([A2]) Then MsgBox "Le nom en A2 n'est pas un nom de feuille valide." & vbLf & vbLf & _
        "Vérifiez qu'il ne contient pas de caractère interdit et qu'une autre feuille ne porte pas déjà ce nom.", , "Erreur"
End If
End Sub
En colonne M des feuilles créées entrez "T" ou "Terminé", comme vous voulez.

La macro affectée au bouton :
Code:
Sub NouvelleFeuille()
'macro affectée au bouton
Dim w As Worksheet, n&, vis%
For Each w In Worksheets
    If w.Name Like "*###-" & Format(Date, "yy") Then If Val(w.Name) > n Then n = Val(w.Name)
Next
Application.ScreenUpdating = False
With Sheets("Matrice")
    .Visible = xlSheetVisible 'si la feuille est masquée
    .Copy After:=Sheets(Sheets.Count)
    .Visible = xlSheetHidden 'masque la feuille
    .Protect "Hessef" 'mot de passe à adapter
End With
With ActiveSheet
    .Unprotect "Hessef" 'mot de passe à adapter
    .[A2] = Format(n + 1, "000-") & Format(Date, "yy") 'pourquoi utiliser A2 ?
    '.Name = Format(n + 1, "000-") & Format(Date, "yy") 'plus simple non ?
    .Tab.ColorIndex = 44 'orange
End With
End Sub
La feuille "Matrice" est protégée avec le mot de passe Hessef.

Fichier (2).

A+
 

Pièces jointes

  • Fiche de suivi 2018(2).xlsm
    27.4 KB · Affichages: 20

Hessef

XLDnaute Nouveau
Bonjour,
Je reviens vers vous car il faut que je rajoute un feuille de synthèse sur mon classeur comprenant :
Colonne A, la couleur de l'onglet de la feuille (automatique en fonction de l’état d'avancement (orange ou vert)
B, le nom de la feuille, soit A2 de chaque feuille
C, la date d'ouverture, soit B2 de chaque feuille
D, la date de fermeture, soit la dernière cellule renseignée de la colonne B de chaque feuille
E, le nom figurant en D2 de chaque feuille
F, le date figurant en E2 de chaque feuille
G, le nom du bâtiment, soit G2 de chaque feuille
H, H2 de chaque feuille
I, Le nom figurant dans la colonne I
J, Le montant figurant dans la colonne K

Je pensais y arriver seul mais visiblement non !
Je joins mon classeur

Merci encore
 

Pièces jointes

  • Fiche de suivi 2018.xlsm
    38.7 KB · Affichages: 13

Discussions similaires

Statistiques des forums

Discussions
314 629
Messages
2 111 351
Membres
111 111
dernier inscrit
houndemint