Plusieurs Macros

Résolu
Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   -  
Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai besoin d'aide pour me mettre sur la piste de certaines macros.

Ne connaissant pas les arguments à utiliser en VBA pour ce dont j'ai besoin, j'espère que vous pourrez me guider !

1. J'aimerais affecter une plage de données à une ComboBox pour faire une liste déroulante.

2. J'aimerais que lors de la fermeture de mon classeur, le verrouillage de la feuille par mot de passe se fasse automatiquement.

3. J'aimerais exporter un onglet d'un fichier Excel vers un autre mais en copiant sous forme de valeur uniquement.

Je n'arrive à faire aucune de ces macros avec l'enregistreur, j'ai donc besoin qu'on me guide.

Merci d'avance.

9 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    '1. J'aimerais affecter une plage de données à une ComboBox pour faire une liste déroulante.
    'methode simple
    'sur feuille da calcul
    ComboBox1.List = Worksheets("feuil1").Range("A1:A10").Value

    'Userform
    ComboBox1.List = Worksheets("feuil1").Range("A1:A10").Value
    'ou
    ComboBox1.RowSource = Worksheets("feuil1").Range("A1:A10").Address

    '2. J'aimerais que lors de la fermeture de mon classeur, le verrouillage de la feuille par mot de passe se fasse automatiquement.
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        'l'enregistreur de macro ne donne pas le mot de passe
        'Adaptez le nom de la feuille et le mot de passe
        Worksheets("feuil1").Protect Password:="toto", DrawingObjects:=True, Contents:=True, Scenarios:=True
        Worksheets("feuil1").EnableSelection = xlNoSelection
    End Sub


    '3. J'aimerais exporter un onglet d'un fichier Excel vers un autre mais en copiant sous forme de valeur uniquement.
    Sub Macro3()
        'fait avec l'enregistreur de macro
        Sheets("Feuil1").Select
        Cells.Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Classeur2").Activate
        Sheets("Feuil1").Select
        Range("A1").Select
        ActiveSheet.Paste
    End Sub
    


    A+
    0
  2. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
     
    Bonjour,

    Merci pour les réponses aux points 1 et 2 qui correspondent parfaitement à mes attentes.

    En revanche pour le point 3, un soucis se pose : la macro proposée copie/colle l'intégralité de la feuille (formule y compris) hors je souhaite que seulement les valeurs soient copiées (en effet certaines formules font référence à d'autre page du classeur d'origine cela pose donc des problèmes lors de la copie.

    Pour détailler un peu plus je souhaiterai lors du click sur mon bouton :
    1. Création d'un nouveau classeur Excel nommé "123"
    2. Copie de la feuille "xxx" du classeur d'origine
    3. Collage en valeur uniquement (afin de ne pas retrouver les formules) sur le nouveau classeur
    4. Enregistrement du nouveau classeur à l'adresse suivante : "C:\Documents\My Documents" (par exemple)
    5. Fermeture du nouveau classeur.
    6. Retour sur la page ou j'ai cliqué sur le bouton et fin de la macro.

    En espérant que ma demande soit réalisable. Merci d'avance
    0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Pour le 3, ai pas mis le bon exemple.........

    Je vous fais cela avec votre derniere demande.

    A+
    0
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    fait avec enregistreur de macro a 99%, adaptez le chemin et nom de classeurs

    Sub Bouton1_Clic()
        Application.ScreenUpdating = False
        Workbooks.Add
        newclass = ActiveWorkbook.Name
        'mettre le votre du classeur
        Windows("Classeur1").Activate
        Cells.Select
        Selection.Copy
        'nouveau classeur
        Windows(newclass).Activate
        Sheets("Feuil1").Select
        'copie valeurs
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        'copie format (pour les dates entre autre)
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        'sauvegarde du nouveau fichier: mettre votre chemin et nom de fichier
        ActiveWorkbook.SaveAs Filename:="C:\Users\SWF\Documents\Classeur2.xls", _
            FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
        ActiveWorkbook.Close
        'mettre le votre du classeur
        Windows("Classeur1").Activate
        Range("A1").Select
        Application.ScreenUpdating = True
    End Sub
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
     
    Bonjour,

    Après quelques petits ajustement, votre code fonctionne parfaitement et je vous en remercie.
    Une seule chose me bloque encore, j'aimerais sauvegarder mes fichiers non pas en Excel 2003, mais en 2010.
    Je pense qu'il faut changer cette partie du code, mais je ne sais pas quoi mettre. Pouvez-vous m'aider encore un peu ?
    ActiveWorkbook.SaveAs Filename:="C:\Users\SWF\Documents\Classeur2.xls", _
            FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False


    Merci d'avance
    0
  7. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    avec quel excel travaillez-vous ?????

    A+
    0
  8. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
     
    Bonjour,

    Je travail avec Excel 2010.
    0
  9. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    vous pouvez utiliser ceci:

    ActiveWorkbook.SaveAs Filename:="C:\Users\SWF\Documents\Classeur2.xlsx", _
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

    A+
    0
  10. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
     
    Cela fonctionne parfaitement,

    Je vous remercie pour votre aide !

    Je passe en résolu, bonne journée.
    0