XL 2016 Lancement macro

  • Initiateur de la discussion Initiateur de la discussion Rabeto
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Rabeto

XLDnaute Occasionnel
Bonjour,

J'aimerai faire un macro qui se lance (faire une copie coller des données d'une feuille dont le nom est la date dans un menu déroulante)

Le nom de chaque feuille est une date, je veux que quand je choisis une date, la macro me fait une copie coller des valeurs dans la feuille dont le nom est la date.

merci
 

Pièces jointes

Bonjour Rabeto,
Le "sheets("010622").activate" peut être remplacé par :
VB:
Sheets(Replace(Replace(CStr([C1]), "/", ""), "20", "")).Select
Attention, cela suppose que la feuille existe, sinon il faut traiter le cas d'erreur.
 
merci,

Donc le code est :

Sub Copy()
Sheets(Replace(Replace(CStr([C1]), "/", ""), "20", "")).Select
Columns("A:AA").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Collage").Select
Range("G1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
End Sub

mais ça marche pas, rien ne se passe quand je modifie la date dans C1
 
Bonjour,
si tu enleves les / en premier => 02062022
les 2 "20" seront supprimés donc c'est plus le nom de ta feuille

t'aura le même soucis pour toutes les dates tombant un 20 xxx 2022 et tous les 02 janvier à septembre

faut deu tu "calcules" plus précisement le nom de ta feuille
 
Bonjour,

Je vous propose cette macro qui se nomme 'Copier' parce que ce n'est pas vraiment recommandé de prendre des noms réservés par vba comme nom d'objet, de variable de procédure ou de fonction.

VB:
Sub Copier()

    Dim Nom As String
    Dim feuille As Worksheet

    Nom = Format(ThisWorkbook.Sheets("Feuil1").Range("C1"), "ddmmyy")
    
    On Error Resume Next ' Si la feuille n'existe pas la ligne suivante levera un erreur
    Set feuille = ThisWorkbook.Sheets(Nom)
    On Error GoTo 0
    
    If Not feuille Is Nothing Then
        ThisWorkbook.Sheets("Collage").Range("G1").CurrentRegion.ClearContents
        With feuille.Range("A1").CurrentRegion
            ThisWorkbook.Sheets("Collage").Range("G1").Resize(.Rows.Count, .Columns.Count).Value = .Value
        End With
        
        MsgBox "Les données de la feuille '" & Nom & "' ont été copiées dans la feuille de collage", vbInformation, "Copier données"
    Else
        MsgBox "Exécution interrompue : " & vbCrLf & _
                        "La feuille '" & Nom & "' n'existe pas dans ce classeur!", vbExclamation, "Copier données"
    End If
    
End Sub
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
162
  • Question Question
Microsoft 365 format date
Réponses
3
Affichages
139
Réponses
10
Affichages
389
Retour