A voir également:
- Excel copie feuille 1 = contenu de cellules
- Formule excel pour additionner plusieurs cellules - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Copie cachée - Guide
- Verrouiller cellules excel - Guide
4 réponses
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
11 juin 2011 à 20:50
11 juin 2011 à 20:50
bonsoir
peut etre quelque chose comme ça
bonne suite
peut etre quelque chose comme ça
Dim nomFE As String Dim plage As Range With Sheets("Feuil1") nomFE = .[A1] & "-" & .[A2] Set plage = Union(.[A1], .[A2]) End With Sheets("Feuil1").Copy after:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = nomFE plage.ClearContents Sheets("Feuil1").Select Range("A1").Select ActiveWorkbook.Save
bonne suite
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié par ccm81 le 12/06/2011 à 08:27
Modifié par ccm81 le 12/06/2011 à 08:27
re
devrait régler le pb
RQ. il faudrait peut être envisager quelque chose si la feuille à créer existe déjà pour éviter un plantage
bonne suite
Dim nomE As String Dim plage As Range Dim dj As String With Sheets("Feuil1") nomE = .[A1] Set plage = Union(.[A1], .[A2]) ' à compléter .... dj = Format(.[A2], "dd-mm-yyyy") End With Application.ScreenUpdating = False Sheets("Feuil1").Copy after:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = nomE & "-" & dj plage.ClearContents Application.ScreenUpdating = True Sheets("Feuil1").Select Range("A1").Select ActiveWorkbook.Save
devrait régler le pb
RQ. il faudrait peut être envisager quelque chose si la feuille à créer existe déjà pour éviter un plantage
bonne suite
Super beau travail merci beaucoup ccm81
Voilà comment j'ai adapté ton code à mon projet
L'élève rentre son nom en B4
Dans la cellule o4 j'ai rentré la fonction = maintenant (format jj mmm aaaa hh:mm:ss)
J'ai extrais les minutes dans la cellule AA2 car si je met :
minute = Format(.O4], "mm") j'ai le mois
Ensuite je fais une copie du gabarit sans les formules pour éviter que la date change dans l'archive.
Je supprime les colonnes W:AB car dans le gabarit j'ai 3 boutons auquel j'ai associé les macros archiver, vider et enregistrer.
au final l'archive est nommée : MARTIN-12.juin.2011-13H19min52s
Plus de problème si la feuille à créer existe déjà car chaque seconde donne un nouveau nom.
Encore merci pour ton aide.
Voilà comment j'ai adapté ton code à mon projet
L'élève rentre son nom en B4
Dans la cellule o4 j'ai rentré la fonction = maintenant (format jj mmm aaaa hh:mm:ss)
J'ai extrais les minutes dans la cellule AA2 car si je met :
minute = Format(.O4], "mm") j'ai le mois
Ensuite je fais une copie du gabarit sans les formules pour éviter que la date change dans l'archive.
Je supprime les colonnes W:AB car dans le gabarit j'ai 3 boutons auquel j'ai associé les macros archiver, vider et enregistrer.
au final l'archive est nommée : MARTIN-12.juin.2011-13H19min52s
Plus de problème si la feuille à créer existe déjà car chaque seconde donne un nouveau nom.
Encore merci pour ton aide.
Sub Archiver_compte_rendu_correctif() Dim nomE As String Dim dj As String Dim heure As String Dim minute As String Dim seconde As String With Sheets("Compresseur compte rendu correc") nomE = .[B4] dj = Format(.[O4], "dd.mmm.yyyy") heure = Format(.O4], "hh") minute = .[AA2] seconde = Format(.[O4], "ss") End With Sheets("Compresseur compte rendu correc").Copy After:=Sheets(Sheets.Count) Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Sheets(Sheets.Count).Name = nomE & "-" & dj & "-" & heure & "H" & minute & "min" & seconde & "s" Columns("w:AB").Select Selection.Delete Shift:=xlToLeft Range("B2").Select Sheets("Compresseur compte rendu correc").Select Range("B2").Select End Sub
Je reviens à la charge :)
Petit soucis de protection
Mon code marche très bien jusqu'à ce que j'active la protection. Impossible de faire une copie du gabarit sans les formules pour éviter que la date change dans l'archive.
Je rajoute donc deux lignes :
ActiveSheet.Unprotect
et
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlNoSelection
Ça marche très bien mais lors de la réouverture du classeur l'archive n'est plus protégée totalement je peux sélectionner les cellules déverrouillées.
Voilà le code complet :
Petit soucis de protection
Mon code marche très bien jusqu'à ce que j'active la protection. Impossible de faire une copie du gabarit sans les formules pour éviter que la date change dans l'archive.
Je rajoute donc deux lignes :
ActiveSheet.Unprotect
et
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlNoSelection
Ça marche très bien mais lors de la réouverture du classeur l'archive n'est plus protégée totalement je peux sélectionner les cellules déverrouillées.
Voilà le code complet :
Sub Archiver_compte_rendu_correctif() Dim nomE As String Dim dj As String Dim heure As String Dim minute As String Dim seconde As String With Sheets("Compresseur compte rendu correc") nomE = .[B4] dj = Format(.[o4], "dd.m.yy") heure = Format(.[o4], "hh") minute = .[AA2] seconde = Format(.[o4], "ss") End With Sheets("Compresseur compte rendu correc").Copy After:=Sheets(4) ActiveSheet.Unprotect Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Sheets(5).Name = nomE & "-" & dj & "-" & heure & "H" & minute & "min" & seconde Columns("w:y").Select Selection.Delete Shift:=xlToLeft ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ActiveSheet.EnableSelection = xlNoSelection Sheets("Compresseur compte rendu correc").Select Range("B2").Select
11 juin 2011 à 22:09
Ton code marche parfaitement à un détail prés que je n'ai pas mentionné.
Dans la cellule A1 j'ai le nom de l'élève pas de problème.
Mais dans la cellule A2 j'ai la fonction =AUJOURDHUI() et évidemment le nom d'une feuille ne peut pas comporter de signe /.
Comment puis je régler ce problème ? Est ce quelque chose dans ce style là ?
ActiveSheet.Name = Format(Date, "DD-MM-YYYY")