Macro nom de l'onglet avec valeur de 2 cellules

yblotiere

XLDnaute Occasionnel
Bonjour à Tous

J'ai un petit souci de syntaxe
Je veut que lorsque je clique sur valid mois dans l'onglet ma macro créer un nouvel onglet avec les valeur des cellules
G2 et C2
j'arrive a le faire avec une cellule mais je ne connait pas la synthaxe pour 2 cellules j'ai bien essyé de trouver quelques chose sur le
forum mais je n'ai rien qui fonctionne ou je ne sai pas
comment l'adapter

merci de votre aide

je vous joint le fichier

yannick
 

Pièces jointes

  • suivi heures.xlsm
    53.9 KB · Affichages: 70

ChTi160

XLDnaute Barbatruc
Re : Macro nom de l'onglet avec valeur de 2 cellules

Bonjour
Bonjour le fil
Bonjour le Forum

voila ce que j'ai modifié dans la Procédure
Code:
Sub valid()
Dim Sht_Name As String
Dim sht As Worksheet
 Application.ScreenUpdating = False
    With Sheets("Horaires")
    
        Sht_Name = Format(.Range("G2"), "mmmm-yyyy") & " " & .Range("C2").Value
          .Cells.Select
        Selection.Copy
    End With
    Set sht = Sheets.Add
 With sht
    With .Cells
      .Select
    ActiveSheet.Paste
    
     .Copy
     .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    End With
     .Name = Sht_Name
     
 End With
 With Application
    .CutCopyMode = False
    .ScreenUpdating = True
 End With
End Sub
On pourrait aussi copier la feuille Source et la renommer .
Bonne fin de Journée
Amicalement
Jean marie
 
Dernière édition:

gauguin

XLDnaute Nouveau
Re : Macro nom de l'onglet avec valeur de 2 cellules

Bonjour,

Voici un essai; les valeurs des cellules c2 et g2 sont placée en a1 et B1 sur la nouvelle feuille créée :

Sub valid()

Dim cell1 As Range
Dim cell2 As Range
Dim nouvelleFeuille As Worksheet

Set nouvelleFeuille = ThisWorkbook.Sheets.Add(after:=Sheets(ThisWorkbook.Sheets.Count))
nouvelleFeuille.Name = "nouvelOnglet" & CStr(Format(Time, "_hms"))
With Sheets("Horaires")
.Activate
Set cell1 = .Range("$c$2")
Set cell2 = .Range("$g$2")
End With

With nouvelleFeuille
.Range("a1") = cell1.Value
.Range("b1") = cell2.Value
.Activate
End With

End Sub

Cordialement,
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro nom de l'onglet avec valeur de 2 cellules

Bonjour le fil, bonjour le forum,

Une autre proposition basée sur ton code initial :

Code:
Sub valid()
Dim h As Object 'déclare la variable h (onglet Horaire)
Dim c As Object 'déclare la variable c (onglet Cible)

Set h = Sheets("Horaires") 'définit l'onglet h
Sheets.Add 'ajoute un oglet
ActiveSheet.Name = CStr(Format(h.Range("C2").Value, "mmmm-yyyy")) & ", " & h.Range("G2").Value 'renomme l'onglet
Set c = ActiveSheet 'définit l'onglet c
h.Cells.Copy c.Range("A1") 'copie les cellule de h et les colle dans A1 de c (avec tous les formats)
c.Cells.Copy 'copie les cellules de c
Application.DisplayAlerts = False 'masque les messages d'alerte Excel
c.Range("A1").PasteSpecial Paste:=xlPasteValues 'colle dans A1 les valeurs
c.Range("A1").Select 'sélectionne A1
Application.CutCopyMode = False 'supprime le clignottement lié au copier
Application.DisplayAlerts = True 'affiche les messages d'alerte Excel
End Sub
je suis d'accord avec ce ChTi de Jean Marie (que je salue au passage), il serait peut-être plus simple de copier l'onglet Horaires le renommer et faire un copier/coller (collage spécial, valeurs)...
 

yblotiere

XLDnaute Occasionnel
Re : Macro nom de l'onglet avec valeur de 2 cellules

Bonjour Jean marie , Gaugin ,Robert

Merci pour votre coup de main vos solutions fonctionne
pourquoi la solution inverse serait plus simple
sans vouloir abuser robert pourrai tu me donner le code si je souhaite faire ce que tu propose

merci de vous êtes pencher sur mon problème

yannick
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro nom de l'onglet avec valeur de 2 cellules

Bonjour le fil, bonjour le forum,

Le code avec copie de l'onglet :

Code:
Sub valid()
Dim h As Object 'déclare la variable h (onglet Horaire)
Dim c As Object 'déclare la variable c (onglet Cible)

Set h = Sheets("Horaires") 'définit l'onglet h
h.Copy before:=h 'copie l'onglet h (avant lui même)
ActiveSheet.Name = CStr(Format(h.Range("C2").Value, "mmmm-yyyy")) & ", " & h.Range("G2").Value 'renomme l'onglet
Set c = ActiveSheet 'définit l'onglet c
c.Cells.Copy 'copie les cellules de l'onglet c
c.Cells.PasteSpecial Paste:=xlPasteValues 'colle les valeurs
c.Range("A1").Select 'sélectionne A1
Application.CutCopyMode = False 'supprime le clignottement lié au copier
End Sub
 

Discussions similaires