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 :

Besoin de vos conseils ou pistes pour répartition montant [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 134
    Points : 84 788
    Points
    84 788
    Billets dans le blog
    15
    Par défaut Besoin de vos conseils ou pistes pour répartition montant
    Bonjour,

    Dans le cadre de mon travail, je tente de concevoir un fichier qui me permettra de faire un outil de synthèse via un TCD, mais j'ai un doute sur la faisabilité et je souhaiterais avoir des conseils ou pistes auprès de vous.

    En fait, je dispose d'un tableau qui ressemble à ceci :

    Nom : Sans titre.png
Affichages : 216
Taille : 9,4 Ko

    Il s'agira pour moi de générer sur la même feuille et à un autre emplacement ou sur une autre feuille, en fonction de la durée, autant de ligne que de période pour avoir quelque chose comme ceci :

    Nom : Sans titre1.png
Affichages : 218
Taille : 18,9 Ko

    Je compte faire du tableau ci-dessus la source de mon TCD.

    Auriez-vous une idée ou une piste sur la manière d'arriver à cela ?

    Merci d'avance pour vos conseils avisés.

    Cordialement,
    Malick
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  2. #2
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut
    Bonjour Malik,
    Un petit morceau de code qui devrait pouvoir t'aider ou te donner un début de solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Test_Periode()
     
    Dim P As Range
    Dim i As Integer
    Dim NbAnnee As Integer
    Set P = ThisWorkbook.Sheets("Sheet1").Range("A1")
    P.Offset(1, 0) = Left(P.Offset(0, 0), 4)
    P.Offset(2, 0) = Right(P.Offset(0, 0), 4)
    P.Offset(3, 0) = P.Offset(2, 0) - P.Offset(1, 0)
    NbAnnee = P.Offset(3, 0).Value
    For i = 0 To NbAnnee
    P.Offset(i, 1) = P.Offset(1, 0) + i
    Next i
    End Sub
    Testé chez moi et résultat satisfaisant je pense
    Eric

    J'oubliais, en A1 j'ai écris "2003-2008"
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Première chose : séparer en deux ta colonne D.
    En l'état, les information de date ne sont pas exploitables. Il faut que tu fasses une colonne "date début" et une autre "Date fin".

    Ensuite, si tu possèdes déjà les colonnes B, C et D de ton second tableau, la colonne E pourra être renseignée avec de simples fonctions SOMME.SI.ENS() sans code VBA.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 134
    Points : 84 788
    Points
    84 788
    Billets dans le blog
    15
    Par défaut
    @ eric4459 : merci, je vais tester ta proposition.

    @ Menhir : je vais également tester ta proposition.Merci

    Je vous reviens pour la suite

    Malick
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  5. #5
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut
    Malick,
    Voici ce que j'obtiens, après bien sûr il faut adapter et compléter le code.
    Nom : Malick Selection Periode.png
Affichages : 197
Taille : 3,4 Ko
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  6. #6
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 134
    Points : 84 788
    Points
    84 788
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Première chose : séparer en deux ta colonne D.
    Ensuite, si tu possèdes déjà les colonnes B, C et D de ton second tableau, la colonne E pourra être renseignée avec de simples fonctions SOMME.SI.ENS() sans code VBA.
    Ce second tableau n'existe pas, c'est ce que je cherche à obtenir via la génération.

    Malick

    Citation Envoyé par eric4459 Voir le message
    Malick,
    Voici ce que j'obtiens, après bien sûr il faut adapter et compléter le code.
    J'ai également cela, mais l'idée en fait c'est d'obtenir le deuxième tableau indiqué avec toutes les colonnes. Je cogite encore.
    Merci pour ce retour.

    Malick

    J'ai pensé aux filtres élaborés.

    Pensez-vous que la méthode AdvancedFilter de l'objet Range puisse permettre de faire cela ?
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  7. #7
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut
    Salut Malik,
    Je viens de tester ceci, essayes et dis-moi ce que tu en penses, çà semble répondre à ton besoin

    Classeur avec sur la 1ere feuille nommée "Sheet1" ton premier tableau

    et 2ème feuille nommée "Sheet2"

    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
    Sub Developpement_Tableau_Periode()
     
    Dim Src As Worksheet
    Dim Dest As Worksheet
    Dim P As Range
    Dim D As Range
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim NbLigne As Integer
    Dim NbLigne2 As Integer
    Dim NbAnnee As Integer
    Set Src = ThisWorkbook.Sheets("Sheet1")
    Set Dest = ThisWorkbook.Sheets("Sheet2")
    Set P = Src.Range("B3")
    Set D = Dest.Range("A2")
     
    NbLigne2 = 0
     
    With Src
    NbLigne = .Cells(.Rows.Count, 2).End(xlUp).Row - 3 ' On compte le nombre de ligne de la colonne B
    End With
     
    For i = 0 To 3
    D.Offset(-1, i) = P.Offset(0, i) 'ici on crée l'intitulé des colonnes du deuxieme tableau (pas vraiment nécessaire, tu peux le faire manuellement mais bon voilà)
    Next i
     
    For j = 1 To NbLigne
    '******************************Ici on calcule le nbre d'années sur la période**********************************
    P.Offset(j, 5) = Left(P.Offset(j, 2), 4)
    P.Offset(j, 6) = Right(P.Offset(j, 2), 4)
    NbAnnee = P.Offset(j, 6) - P.Offset(j, 5)
    '******************************Ici on rempli les lignes pour chaque période************************************
    For k = 0 To NbAnnee
    D.Offset(k + NbLigne2, 0) = P.Offset(j, 0)
    D.Offset(k + NbLigne2, 1) = P.Offset(j, 1)
    D.Offset(k + NbLigne2, 2) = P.Offset(j, 5) + k
    D.Offset(k + NbLigne2, 3) = P.Offset(j, 3)
    Next k
     
    With Dest
    NbLigne2 = .Cells(.Rows.Count, 1).End(xlUp).Row - 1 ' On compte le nombre de ligne de la colonne A
    End With
     
    Next j
    End Sub
    On pourrait faire plus simple,
    Le forum d'autres alternatives?
    , mais c'est venu comme çà
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  8. #8
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 134
    Points : 84 788
    Points
    84 788
    Billets dans le blog
    15
    Par défaut
    @ Eric : c'est exactement cela, merci beaucoup pour ton aide

    Toutefois, il y a juste un petit souci, la première ligne concernant la Description A - XXX - 100000 n'est pas répartie sur la durée de 2003 à 2008.

    Peut-être un bogue

    Nom : Sans titre.png
Affichages : 188
Taille : 5,9 Ko

    les intitulés des colonnes n'apparaissent pas également sur le deuxième tableau.

    Merci encore
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  9. #9
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut
    Salut Malik,
    Je viens d'effectuer plusieurs fois le test et voici mon résultat :
    Nom : Malick Selection Periode 2.png
Affichages : 187
Taille : 16,8 Ko
    En pièce jointe le fichier

    Malik_ Determination des annees sur une periode donnee.xlsm

    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  10. #10
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 134
    Points : 84 788
    Points
    84 788
    Billets dans le blog
    15
    Par défaut
    Merci beaucoup pour ton aide et disponibilité

    Il fallait juste remplacer cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set P = Src.Range("B3")
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set P = Src.Range("B2")
    Grâce à toi, j'ai exactement ce que je voulais. Je passe la discussion en

    Un seul mot
    Eric

    Cordialement,
    Malick
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

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

Discussions similaires

  1. test javascript : test d'une valeur entrée
    Par KH_WE dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/07/2009, 19h52
  2. Réponses: 1
    Dernier message: 01/06/2009, 17h43
  3. Réponses: 3
    Dernier message: 07/12/2007, 18h12
  4. [Test]Recherche test de Geekitude..
    Par Fleur-Anne.Blain dans le forum La taverne du Club : Humour et divers
    Réponses: 163
    Dernier message: 17/10/2006, 13h55

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