AIDE EXCEL VBA COPIER COLLER FEUILLE COMPLÈTE AVEC GRAPH
#1
Débutant XLPages

Inscription: 28/07/2017
De toulouse

Messages: 2

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 13-10-2017 16h23

Bonjour

Je travaille beaucoup avec les formules mais par contre je ne connais pas le VBA . On m'a fait un code que je suis arrivé à adapter sur un autre travail, mais la, je bloque. Le code permet de copier une feuille Excel donc avec les tableaux et les mises en formes , sans les formules (pour qu'ils ne se mettent pas à jour) vers une nouvelle dont on à choisit le nom dans une liste et cela fonctionne avec une fenêtre de choix .. Mais dans cette feuille, j'ai des graphiques présents et j'aimerai qu'ils soient copiées, ce qui n'est pas le cas actuellement.. La feuille source s'appelle "Reporting"

la partie qui permet de copier (si j'ai bien tout saisi) est la suivante :

' Copie de la feuille "Reporting" sans les formules pour éviter que les données se mettent à jours
Application.ScreenUpdating = False
Sheets.Add After:=Sheets(Sheets.Count)
Sheets("Reporting").Cells.Copy
Sheets(Sheets.Count).Select
Sheets(Sheets.Count).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets(Sheets.Count).Name = UCase(ComboBox1) & "_" & Format(Now, "yyyy")
[A1].Select

/////////////////////////////////////////////////////////////////////////////////


Le code complet est ci dessous :





Private Sub annuler_Click()
Unload Me
End Sub

Private Sub ComboBox1_Change()

End Sub

Private Sub Label1_Click()

End Sub

Private Sub OK_Click()
If ComboBox1 = "" Then
MsgBox ("VEUILLEZ SELECTIONNER LA SEMAINE A CREER")
Exit Sub
End If
For I = 1 To Sheets.Count
If UCase(Left(Sheets(I).Name, Len(ComboBox1))) = UCase(ComboBox1) Then
MsgBox ("La feuille " & UCase(ComboBox1) & " existe déjà, si vous désirez regénérer une feuille de données veuillez la supprimer avant toute action")
Exit Sub
End If
Next I
' Copie de la feuille "Reporting" sans les formules pour éviter que les données se mettent à jours
Application.ScreenUpdating = False
Sheets.Add After:=Sheets(Sheets.Count)
Sheets("Reporting").Cells.Copy
Sheets(Sheets.Count).Select
Sheets(Sheets.Count).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets(Sheets.Count).Name = UCase(ComboBox1) & "_" & Format(Now, "yyyy")
[A1].Select
Application.ScreenUpdating = True
Unload Me
End Sub

Private Sub UserForm_Initialize()
ComboBox1.AddItem "Semaine42"
ComboBox1.AddItem "Semaine43"
ComboBox1.AddItem "Semaine44"
ComboBox1.AddItem "Semaine45"
ComboBox1.AddItem "Semaine46"
ComboBox1.AddItem "Semaine47"
ComboBox1.AddItem "Semaine48"
ComboBox1.AddItem "Semaine49"
ComboBox1.AddItem "Semaine50"
ComboBox1.AddItem "Semaine51"
ComboBox1.AddItem "Semaine52"
End Sub


///////////////////////////////////////////////////////


Merci les gens d'avance !

Hors Ligne
Rapport   Haut 

Re: AIDE EXCEL VBA COPIER COLLER FEUILLE COMPLÈTE AVEC GRAPH
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 13-10-2017 19h10

Bonjour ritchi3131, le Forum,

 

Sans fichier exemple ce n'est jamais facile d'aider... sad

 

Cela dit, voici ma vision de ton problème. Proposition de code pour remplacer le tien (dans son ensemble) ...

CODE A COLLER DANS LE MODULE DE TON USERFORM (en remplacement de l'ancien) :

Option Explicit

Private Sub annuler_Click()
    Unload Me
End Sub

Private Sub OK_Click()
Dim Sh As Worksheet
Dim NomFeuille As String
Dim I As Byte
    If ComboBox1 = "" Then
        MsgBox ("VEUILLEZ SELECTIONNER LA SEMAINE A CREER")
        Exit Sub
    End If
    NomFeuille = UCase(ComboBox1.Value) & "_" & Format(Now, "yyyy")
    On Error Resume Next
    Set Sh = Sheets(NomFeuille)
    On Error GoTo 0
    'La feuille existe déjà ?
    If Not Sh Is Nothing Then
        MsgBox ("La feuille " & UCase(ComboBox1) & " existe déjà, si vous désirez regénérer une feuille de données veuillez la supprimer avant toute action")
        Exit Sub
    End If
   
    ' Copie de la feuille "Reporting" sans les formules pour éviter que les données se mettent à jours
    Application.ScreenUpdating = False
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets("Reporting").Copy After:=Sheets(Sheets.Count)
    With ActiveSheet
        'Suppression des formules
        .Cells.Copy
        .Cells.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        'Nom de feuille
        .Name = NomFeuille
        .Range("A1").Select
    End With
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    Unload Me
End Sub

Private Sub UserForm_Initialize()
Dim S As Byte
    For S = 42 To 52
        ComboBox1.AddItem "Semaine" & S
    Next S
End Sub
 

En espérant t'avoir dépanné.

Bien cordialement,
 


Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes