IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

remplir un tableau avec un listing


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Avatar de yoyo3d
    Homme Profil pro
    Administratif
    Inscrit en
    Avril 2002
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Administratif
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2002
    Messages : 413
    Points : 1 254
    Points
    1 254
    Par défaut remplir un tableau avec un listing
    Bonjour à toutes et à tous,

    Je dois pré remplir un tableau avec des données provenant d'un listing.
    Pour cela j'ai un classeur contenant 2 feuilles ( Modèle et Base Listing ), la première feuille contient le tableau vide (qui servira de "modèle"), et la 2e contient le fameux listing.

    Les données du listing sont du type:
    Nom Commune / Type Objet / Référence Objet / Adresse Objet

    Jusque la, j'ai réussi à "nettoyer" le listing, je peux dire combien j'ai de communes, et combien j'ai d'objet dans chaque commune (grâce à un tableau croisé (sur une feuille "TC") qui me sert d'intermedaire, il y avait peut être plus simple mais ça fonctionne).
    j'ai aussi réussi à créer autant de feuille que de commune mais après je sèche….
    Il me reste à :
    Renommer chaque feuille avec le nom d'une commune (j'y suis presque, mais…)
    Et recopier le "modèle" de tableau sur chaque feuille (je pense faire un simple copié / coller dans ma boucle de création des feuilles…)
    Recopier chaque commune en dessous de chaque tableau avec les données liées à chaque commune


    En attendant voilà mon code (Je bosse sur excel 2000):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Sub TC_pi()
    '
    ' TC_pi Macro
    ' Macro enregistrée le 12/03/2010 
    '
     
    'positionnement sur la feuille Base Listing en A1
        Sheets("Base Listing").Select
        Range("A1").Select
        Selection.CurrentRegion.Select
        'Tri par ordre croissant des communes
        Selection.Sort Key1:=Range("a2"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
     
    ' Création d'un Tableau croisé Dynamique Variable
        DerniereLigne = Range("A1").End(xlDown).Row
        ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
            "'Base Listing'!R1C1:R" & DerniereLigne & "C4").CreatePivotTable TableDestination:="", _
            TableName:="Tableau croisé dynamique3"
        ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(1, 1)
        ActiveSheet.Cells(1, 1).Select
        ActiveSheet.PivotTables("Tableau croisé dynamique3").SmallGrid = False
        ActiveSheet.PivotTables("Tableau croisé dynamique3").AddFields RowFields:= _
            "Commune"
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Commune"). _
            Orientation = xlDataField
     
    'renommer la feuille du tc (n°2) en "TC"
        Sheets(2).Name = "TC"
     
    ' Selection du tableau et Copier/Collage spacial "valeur"
        Range("A1").Select
        ActiveCell.CurrentRegion.Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
     
    ' Suppression des 2 ere lignes "inutiles"
        Rows("1:2").Select
        Selection.Delete Shift:=xlUp
        Range("A1").Select
     
    ' definir le nombre de commune en D1
      Nb_Commune = WorksheetFunction.CountA(Range("a:a")) - 1
        Range("D1").Select
        ActiveCell = Nb_Commune
     
     
     
    ' Définir le nombre d'onglet à créer en fonction du nombre de communes
        Range("a1").Select
        For i = 1 To Nb_Commune
            Sheets.Add
     
            Sheets(2).Name = i 'à la place du i ' la place du i je dois dire de prendre la premiere valeur du tableau croisé
        Next
     
        Dim Nom_feuille As String
     
      'selectionner la liste des communes (colonne a:a)
     
    ' Renommer chaque onglet avec les noms des communes
     
    ' Copier la base du tableau pour le pré-remplissage dans chaque onglet
     
    ' copier les données de chaque commune
     
    End Sub
    Bon il est claire que mon code va en faire hurler quelques uns....alors pitié,pas tapper...

  2. #2
    Membre éprouvé
    Avatar de yoyo3d
    Homme Profil pro
    Administratif
    Inscrit en
    Avril 2002
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Administratif
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2002
    Messages : 413
    Points : 1 254
    Points
    1 254
    Par défaut
    Bon, j'ai copier le "modele " de tableau sur chaque nouvelle feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    ' Définir le nombre d'onglet à créer en fonction du nombre de communes
        'Copier le modele du tableau sur feuille modele
        Sheets("Modele").Select
        Range("a1").Select
        ActiveCell.CurrentRegion.Select
        Selection.Copy
    ....
    ....
     
        'retourner sur la feuille TC
        Sheets("TC").Select
        Range("a1").Select
     
        For i = 1 To Nb_Commune
            Sheets.Add
            'Copier le modele du tableau
            ActiveSheet.Paste 'coller le modele de tableau
            Sheets(2).Name = i
        Next
    ça progresse...

  3. #3
    Membre éprouvé
    Avatar de yoyo3d
    Homme Profil pro
    Administratif
    Inscrit en
    Avril 2002
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Administratif
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2002
    Messages : 413
    Points : 1 254
    Points
    1 254
    Par défaut
    un p'tit coup de pouce SVP, je n'arrive pas à creer la boucle de tri...
    je sais la décrire, mais je ne sais pas l'ecrire en VBA


    Nb_commune= nombre de commune differentes
    Nom_commune= nom de la commune


    se positionner sur la feuille "listing" sur la premiere ligne du listing cellule ("A1")
    pour chaque commune, je regarde combien j'ai de ligne à copier
    je les selectionne,
    je les copie dans l'onglet correspondant (Nom_Commune) à un certain endroit
    et ainsi de suite jusqu'a ce que j'ai vérifié tout le listing
    (ou alors juqu'a ce que ma boucle ai atteint le nb de commune "Nb_Commune")

    le probleme c'est une fois que j'ai copié ma première zone, je doit retourner sur ma feuille listing et récuperer les éléments de la seconde commune...

    Merci

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 42
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    le plus simple c'est de supprimer les lignes que tu traite.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/02/2014, 14h38
  2. Réponses: 8
    Dernier message: 11/03/2007, 18h10
  3. Réponses: 7
    Dernier message: 22/09/2006, 15h52
  4. [C#] Comment remplir un tableau avec un arraylist
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 9
    Dernier message: 22/06/2006, 15h14
  5. [Excel]Ouvrir un tableau avec une liste modifiable
    Par mulot03 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/05/2006, 09h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo