Macro : création de fiche

Younesoa Messages postés 1 Statut Membre -  
via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je dispose d'un tableau avec des noms de clients en lignes et plusieurs types d'informations en colonnes : je voudrais trouver un moyen pour créer une fiche par onglet pour chaque client avec le nom de celui-ci et les infos ( qui étaient en colonne) en lignes à partir de mon tableau.
Est-ce que cela est possible et si oui comment ?
En vous remerciant

1 réponse

  1. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    C'est possible avec une macro à mettre dans un module de l'éditeur VBA (ALT + F11 pour ouvrir l'éditeur puis Insertion Module - copier-coller la macro dans la page et fermer éditeur) puis lancer la macro ensuite à partir de la feuille du tableau en allant dans Developpeur - Macros - créer_onglets - Exécuter

    Exemple de macro, à adapter (nom de la feuille de base, n° dernière colonne)
    Sub créer_onglets()
    Dim Ligne As Long
    'dernière ligne remplie col A
    Ligne = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
    ' boucle sur les lignes de Feuil1
    For n = 2 To Ligne
    ' ajoute une feuille en dernier
    Sheets.Add After:=Sheets(Sheets.Count)
    ' renomme cette feuille avec le nom client
    Sheets(Sheets.Count).Select
    Sheets(Sheets.Count).Name = Sheets("Feuil1").Range("A" & n) 'MODIFIER Feuil1 si nécessaire
    ' place le nom client en A1 nouvelle feuille
    Sheets(Sheets.Count).Range("A1") = Sheets("Feuil1").Range("A" & n) 'MODIFIER Feuil1 si nécessaire
    ' boucle sur les colonnes 2 a 5 de feuil1 
        For c = 2 To 5 ' REMPLACER le 5 par le n° de la dernière colonne
        ' place en col A  et en ligne c de la nouvelle feuille le titre de la colonne
        Sheets(Sheets.Count).Range("A" & c) = Sheets("Feuil1").Cells(1, c)
          ' place en col B et en ligne c de la nouvelle feuille l'infomation de Feuil1
        Sheets(Sheets.Count).Range("B" & c) = Sheets("Feuil1").Cells(Ligne, c)
        Next
     ' Repositionnement sur Feuil 1
    Sheets("Feuil1").Select
    Next
    End Sub


    Cdlmnt
    Via
    0