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 :

Création d'un classeurs à partir d'une selection de données. [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 13
    Par défaut Création d'un classeurs à partir d'une selection de données.
    Bonjour,

    Actuellement en stage en compta et connaissant peu le VBA je m’adresse à vous.

    Nous avons une feuille des données excel regroupant plusieurs informations sur nos filiales.
    J'aimerai développer une marco qui identifierai, exctracterai toutes les informations pour une filiales et créerait un classeur par filiale avec ses informations.

    J'avoue être complétement perdu dans le code.

    Merci pour votre aide.

    Tonio-

  2. #2
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 909
    Par défaut
    Bonjour

    J'avoue être complétement perdu dans le code
    Quel est ton code ?

    identifierai, exctracterai toutes les informations
    D'où proviennent les données ? Comment sont-elles organisées ?

    Si c'est généré un classeur par filiale, et qu'il n'y aucun traitement à faire, l'algorithmie serait la suivante :

    1) Afficher les informations avec un tri sur l'identifiant de la filiale (partie identification)
    2) Parcourir chacune des lignes de ta base de données et recopier les données et/ou les traiter dans un nouveau classeur jusqu'à ce que ton identifiant ne soit plus celui qui correspond à ta filiale (partie extraction)

    On manque un peu de détails...

    Cordialement,

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 13
    Par défaut
    Gado2600 merci pour ton aide.

    Les données sont triées par identifiant produit. il chaque filiale possède une ou plusieurs références produits uniques.

    J'ai obtenu ce code grâce à la fonction enregistrement de macro.

    Je manque de connaissance pour effectuer la boucle que tu me proposes
    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
    Sub Test()
    '
    ' Test Macro
    '
     
    ' Selection des premieres données. Je ne sais pas variabiliser le "2" sachant que mes filiales vont de "01" à "99".
     
        ActiveSheet.Range("$A$2:$X$261").AutoFilter Field:=1, Criteria1:="2"
        Range("A1:Y261").Select
        Range("B7").Activate
    ' Copie des données et création de la nouvelle feuille
        Selection.Copy
        Workbooks.Add
        ActiveSheet.Paste
        Windows("Classeur2").Activate
    'Je recommence à copier les données du même classeur, de la même filiale mais d'une autre feuille.
        ActiveSheet.Range("$A$2:$X$261").AutoFilter Field:=1
        Sheets("Produits2").Select
        Range("A118").Select
        Selection.End(xlUp).Select
        ActiveSheet.Range("$A$2:$AM$211").AutoFilter Field:=1, Criteria1:="2"
        Cells.Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Classeur11").Activate
        Range("B9").Select
        Sheets("Feuil2").Select
        ActiveSheet.Paste
        Windows("Classeur2").Activate
        ActiveSheet.Range("$A$2:$AM$211").AutoFilter Field:=1
    End Sub
    grand merci pour ton aide.

    Cordialement,

    Tonio-

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut création de classeur
    Bonjour,

    Tout d'abord, il faut bien débuter et nous passons tous par là.

    Après une familiarisation sur les tableaux et les dictionnaires, tu pourras utiliser cette - modeste - contribution.

    création de feuilles depuis occurences

    Avec cette adaptation : créer un classeur en lieu et place de créer une feuille

    Bonne soirée.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 13
    Par défaut
    Merci encore pour votre aide.

    Pouvez-vous me dire vos pensées sur ce code ?

    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
     
     
    Option Explicit
    Option Compare Text
     
    Sub Test()
     
    End Sub
    Dim Codeentity As String
    Dim Email As String
    Dim n As Integer
    Dim Nom_Fichier_source As String
     
    'Lancement de la boucle
    n = 2
    Nom_Fichier_source = ActiveWorkbook.Name
     While Not IsEmpty(Sheets("contact").Cells(n, 1))
     
     'Création et enregistrement d'un nouveau classeur
        Workbooks.Add
                ChDir "XXX/XXX/XXX/XXX"
        ActiveWorkbook.SaveAs Filename:= _
                "XXX/XXX/XXX/XXX/&n.xls", _
                FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
                ReadOnlyRecommended:=False, CreateBackup:=False
     
    'Les ongles sont renommés
        ActiveSheet.Paste
            Sheets("Feuil1").Select
            Sheets("Feuil1").Name = "Product"
            Sheets("Feuil2").Select
            Sheets("Feuil2").Name = "Product bio"
     
    'Selection et copie  des données
        Windows("New Product.xls").Activate
            Sheets("Bank information").Select
            ActiveSheet.Range("$A$2:$X$261").AutoFilter Field:=1, Criteria1:="n"
            Range("A1:Y261").Select
            Range("M9").Activate
            Selection.Copy
            ActiveWindow.ScrollColumn = 3
            ActiveWindow.ScrollColumn = 1
            ActiveWindow.SmallScroll Down:=-9
     
     'Nous collons les données
        Windows("n").Activate
        ActiveSheet.Paste
     
     'Fermeture du classeur
        Windows("n.xls").Activate
        ActiveWindow.Close True
     
        n = n + 1
     
    'Fin de la boucle
    Wend
     
     'Nous fermons les classeurs
      Windows("New Product.xls").Activate
     ActiveWindow.Close False
     
     
    End Sub
    Merci pour vos retours.

    Cordialement,

    Tonio-

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 13
    Par défaut
    Bonjour à tous,

    Je rencontre un problème dans l'enregistrement du fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     ActiveWorkbook.SaveAs Filename:= _
                "XXX/XXX/XXX/XXX/&n.xls", _
                FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
                ReadOnlyRecommended:=False, CreateBackup:=False

    J'aimerai variabilité le nom. Savez-vous comment je peux faire ?

    Cordialement,

    TONIO-

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Création d'un fichier à partir d'une base de données Mysql
    Par develop55 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/11/2014, 19h48
  2. [XL-2010] Création de factures PDF à partir d'une base de données Excel
    Par lou_loutte dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/06/2014, 23h02
  3. [XL-2010] Création d'un classeur à partir d'une feuille
    Par Ludo11150 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/04/2014, 10h06
  4. affichage simultané à partir d'une selection combo
    Par donyas dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 27/07/2006, 14h59
  5. [oracle 9i]update à partir d'une selection complexe
    Par Requin15 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/06/2006, 10h18

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