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 outil de reporting : besoin d'aide pour compléter un code [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 133
    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 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut Création outil de reporting : besoin d'aide pour compléter un code
    Bonjour,

    Débutant en VBA, je me lance dans la création d'un outil pour faire des remontées mensuelles de données comptables à partir d'une balance mensuelle.

    La balance a la structure suivante :

    Nom : Sans titre.png
Affichages : 449
Taille : 28,5 Ko

    Ce que je souhaite, c'est parcourir la colonne A afin d'identifier les informations relatives aux comptes commençant par 661 ou 662 ou 668. Une fois ces comptes identifiés, je souhaite copier le Numéro du compte, le libellé et le solde débit dans la feuille Personnel qui se présente comme suit :

    Nom : Sans titre2.png
Affichages : 430
Taille : 6,6 Ko

    J'aurai besoin de votre aide pour compléter le code que ci-après que je suis en train de faire :
    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
     
     'Personnel
    Sub ChargesDePersonnel()
        Dim DernLigne As Long
       Sheets("Balance").Select   'se positionner sur la feuille Balance
    Range("A3").Activate    'se positionner sur le premier numéro de compte de la balance c'est-à-dire la cellule A3
    y = 0
    DernLigne = Sheets("Balance").Range("A65536").End(xlUp).Row 'Dernière ligne
     
    'Remplissage de la feuille Personnel 
     
    Sheets("Personnel").Select   'se positionner sur la feuille Personnel
    Range("A6:A65536").EntireRow.Delete Shift:=xlUp 'Effacer toutes les lignes sur cette plage
     
    While ActiveCell.Value <> ""
        If (Left(ActiveCell.Value, 3) = 661) Or (Left(ActiveCell.Value, 3) = 662) Or (Left(ActiveCell.Value, 3) = 668) Then
     
    Wend
     
       End Sub
    Merci d'avance pour votre aide

    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 extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour

    Je te suggère d'y mettre (après ton "then") de quoi constituer une plage des colonnes à copier. Application.Union te le permet selon ce "modèle" :
    Pour chaque occurrence 
    
      - si plage is nothing alors 
    ------ plage = tes cellules à copier
      - sinon
    ------ plage = Application.Union(plage, tes cdellules à copier)
    Fin pour
    Et à la fin :

    plage.copy destination:= .........feuille et cellule à partir de laquelle doit se faire cette copie ...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Bonjour,

    Une autre solution facile d'accès serait de piloter un filtre élaboré mais il faudrait que les entêtes de colonnes aient le même nom que la source:
    http://philippetulliez.developpez.co...dvancedfilter/

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Et une solution de base
    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
    Sub ChargesDePersonnel()
    Dim DernLigne As Long
    Dim C As Range
    Dim LigneC As Integer
        LigneC = 6
        With Sheets("Personnel")
            .Range(.Cells(LigneC, 1), .Cells(LigneC, 1).End(xlDown)).EntireRow.ClearContents
        End With
        With Sheets("Balance")
            DernLigne = .Range("A" & Rows.Count).End(xlUp).Row
            For Each C In .Range("A3:A" & DernLigne)
                If C.Value Like "661*" Or C.Value Like "662*" Or C.Value Like "668*" Then
                    With Sheets("Personnel")
                        .Cells(LigneC, 1).Resize(, 2) = C.Resize(, 2).Value 'Copie du N° compte et libellé
                        .Cells(LigneC, 3) = C.Offset(, 6).Value 'Copie du solde débit
                        LigneC = LigneC + 1
                    End With
                End If
            Next C
        End With
    End Sub
    Cordialement.

  5. #5
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    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 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut
    à tout le monde

    D'abord je vous remercie pour votre disponibilité et vos retours.

    @ unparia : merci pour cette proposition que je vais aussi exploiter

    @ Promethee25 : merci. Je connaissais ce tutoriel, mais comme je cherche à l'automatiser alors j'ai opté pour le VBA.


    @ gFZT82 : merci pour cette proposition, je vais essayer de l'adapter à mon fichier source et je vous ferais un retour

    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.

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour !

    Citation Envoyé par milkoseck Voir le message
    @ Promethee25 : merci. Je connaissais ce tutoriel, mais comme je cherche à l'automatiser alors j'ai opté pour le VBA.
    Justement en lisant bien le tutoriel, il suffit de deux lignes de code afin d'effectuer ce genre de copie !
    Rien qu'en utilisant l'Enregistreur de macros, une base de code (à nettoyer) est livrée sur un plateau …

    Les titres des colonnes doivent être strictement identiques entre les deux feuilles ! Sinon il faut filtrer sur place puis copier …

    Si vraiment tu ne t'en sors pas, malgré les nombreux exemples de filtres avancés dans ce forum VBA,
    joindre un classeur exemple en .xlsx (sans code donc !) avec une feuille source et une feuille résultat attendu …

    ______________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #7
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    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 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut
    Marc-L

    Citation Envoyé par Marc-L Voir le message
    Bonjour !

    Justement en lisant bien le tutoriel, il suffit de deux lignes de code afin d'effectuer ce genre de copie !
    Rien qu'en utilisant l'Enregistreur de macros, une base de code (à nettoyer) est livrée sur un plateau …
    Effectivement, et je n'avais pas pensé à l'enregistreur de macros. Merci pour cette précision Je vais aussi exploiter l'enregistreur de macros.

    Citation Envoyé par Marc-L Voir le message
    Bonjour !


    Si vraiment tu ne t'en sors pas, malgré les nombreux exemples de filtres avancés dans ce forum VBA,
    joindre un classeur exemple en .xlsx (sans code donc !) avec une feuille source et une feuille résultat attendu …
    C'est noté. Je vous ferais un retour en fonction de mon avancement.

    Cordialement
    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.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Tout à fait.
    Quand j'ai écrit "piloter", j'entendais par là piloter un filtre élaboré avec VBA.

  9. #9
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    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 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut
    Exactement, merci pour cette précision également.
    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.

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,

    Liste non exhaustive d'exemples et explications avec la méthode AdvancedFilter et contenant pour la plupart un classeur à télécharger
    1. Dans la discussion nommée AdvancedFilter - Mise à jour de l'extraction aprés inscription de données dans une bdd
    2. Exportation en splittant les données répondant aux critères dans des feuilles séparées
    3. Procédure de transfert de données (Exportation et suppression de la source)
    4. Supprimer des lignes suivant critères avec la méthode AdvancedFilter
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  11. #11
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    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 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut
    Philippe

    Merci pour ces liens, je vais en prendre connaissance.

    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.

  12. #12
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    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 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut Décalage sur le résultat final entre deux mois
    Bonjour,

    Je suis parti sur la proposition de gFZT82 qui fait bien ce que je voulais pour un mois donné. Maintenant, en voulant l'adapter à mon modèle qui sera constitué des balances mensuelles janvier, fevrier, ...décembre, je me heurte à un problème. J'explique :

    En effet, pour un mois donné, la balance peut avoir de nouveaux comptes qui ne se trouvaient pas sur la balance du mois précédent. Ainsi, en exécutant le code pour remplir la colonne Mois+1 (ici février), je voudrais que tous les nouveaux comptes soient également copiés et que la colonne des mois pour lesquels ces comptes n'existaient pas affiche 0.

    Le code pour faire le travail sur janvier et février est le suivant :

    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
    Option Explicit
    'Remplissage Feuille Personnel Janvier
    Sub ChargesDePersonnelJanvier()
    Dim DernLigne As Long
    Dim C As Range
    Dim LigneC As Integer
        LigneC = 6
        With Sheets("Personnel")
            .Range(.Cells(LigneC, 1), .Cells(LigneC, 1).End(xlDown)).EntireRow.ClearContents
        End With
        With Sheets("BalanceJanvier")
            DernLigne = .Range("A" & Rows.Count).End(xlUp).Row
            For Each C In .Range("A3:A" & DernLigne)
                If C.Value Like "661*" Or C.Value Like "663*" Or C.Value Like "668*" Then
                    With Sheets("Personnel")
                        .Cells(LigneC, 1).Resize(, 2) = C.Resize(, 2).Value 'Copie du N° compte et libellé
                        .Cells(LigneC, 3) = C.Offset(, 6).Value 'Copie du solde débit de la balance du mois de janvier
                        LigneC = LigneC + 1
                    End With
                End If
            Next C
        End With
    End Sub
    'Remplissage Feuille Personnel Février
    Sub ChargesDePersonnelFevrier()
    Dim DernLigne As Long
    Dim C As Range
    Dim LigneC As Integer
        LigneC = 6
        'With Sheets("Personnel")
        '    .Range(.Cells(LigneC, 1), .Cells(LigneC, 1).End(xlDown)).EntireRow.ClearContents
       ' End With
        With Sheets("BalanceFevrier")
            DernLigne = .Range("A" & Rows.Count).End(xlUp).Row
            For Each C In .Range("A3:A" & DernLigne)
                If C.Value Like "661*" Or C.Value Like "663*" Or C.Value Like "668*" Then
                    With Sheets("Personnel")
                        .Cells(LigneC, 1).Resize(, 2) = C.Resize(, 2).Value 'Copie du N° compte et libellé
                        .Cells(LigneC, 4) = C.Offset(, 4).Value 'Copie Mouvement débit de la balance Février
                        LigneC = LigneC + 1
                    End With
                End If
            Next C
        End With
    End Sub
    En l'exécutant sur janvier, cela fonctionne bien :

    Nom : Sans titre.png
Affichages : 362
Taille : 10,6 Ko

    Toutefois, l'exécution du code pour février entraîne un décalage entre les chiffres :

    Nom : Sans titre1.png
Affichages : 374
Taille : 22,6 Ko

    ici par exemple je voudrais que le compte 661035 ZAR m'affiche 0 sur janvier, idem pour les autres nouveaux comptes.

    Une idée s'il vous plaît ?

    Voici mon fichier test au format .xlsx
    Fichiers attachés Fichiers attachés
    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.

  13. #13
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Re-bonjour,

    Voici une adaptation des procédures prenant en compte tes remarques.
    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
    Option Explicit
    Sub RAZ()
        With Sheets("Personnel")
            .Range(.Cells(6, 1), .Cells(6, 1).End(xlDown)).EntireRow.ClearContents
        End With
    End Sub
    'Remplissage Feuille Personnel Janvier
    Sub CDP_Janvier()
        ChargesDePersonnel "BalanceJanvier", 1
    End Sub
    'Remplissage Feuille Personnel Fevrier
    Sub CDP_Fevrier()
        ChargesDePersonnel "BalanceFevrier", 2
    End Sub
    Sub ChargesDePersonnel(NomMois As String, NumMois As Integer)
    Dim DernLigne As Long
    Dim C As Range, Cel As Range
    Dim LigneC As Integer
        LigneC = 6
        With Sheets(NomMois)
            DernLigne = .Range("A" & Rows.Count).End(xlUp).Row
            For Each C In .Range("A3:A" & DernLigne)
                If C.Value Like "661*" Or C.Value Like "663*" Or C.Value Like "668*" Then
                    With Sheets("Personnel")
                        Set Cel = .Columns(1).Find(C.Value, , xlValues, xlWhole)
                        If Not Cel Is Nothing Then
                            Cel.Offset(, NumMois + 1) = C.Offset(, 6).Value 'Copie du solde débit de la balance du mois
                        Else
                            LigneC = .Range("A" & Rows.Count).End(xlUp).Row + 1
                            .Cells(LigneC, 1).Resize(, 2) = C.Resize(, 2).Value 'Copie du N° compte et libellé
                            .Cells(LigneC, NumMois + 2) = C.Offset(, 6).Value 'Copie du solde débit de la balance du mois
                        End If
                    End With
                End If
            Next C
        End With
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

  14. #14
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    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 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut
    Re-bonjour

    Merci beaucoup, je vais essayer de l'adapter à ma situation. Je vous informerais du résultat.

    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.

  15. #15
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    P'tite démonstration globale traitant toutes les balances présentes :

    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
    Sub Demo()
             Const MAX = 99
             Dim CPT(1 To MAX, 0), L%, R%, V, VA, W%, WN%
             WN = ThisWorkbook.Worksheets.Count
             ReDim COL(1 To MAX, 1 To WN)
        For W = 2 To WN
               VA = ThisWorkbook.Worksheets(W).Cells(1).CurrentRegion.Value
            For R = 3 To UBound(VA)
                If VA(R, 1) Like "661*" Or VA(R, 1) Like "662*" Or VA(R, 1) Like "668*" Then
                    V = Application.Match(VA(R, 1), CPT, 0)
                    If IsError(V) Then L = L + 1: CPT(L, 0) = VA(R, 1): COL(L, 1) = VA(R, 2): V = L
                    COL(V, W) = VA(R, 7) - VA(R, 8)
                End If
            Next
        Next
             Application.ScreenUpdating = False
        With Feuil1.[A6].Resize(L, WN + 1)
            .Columns(1).Value = CPT
            .Columns(2).Resize(, WN).Value = COL
            .Sort .Cells(1), xlAscending, Header:=xlNo
        End With
             Application.ScreenUpdating = True
    End Sub
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  16. #16
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    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 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut
    +1
    Après test sur mon fichier d'origine, les résultats obtenus sont concluants via cette méthode et le dernier code proposé.:Merci:

    @ Marc : excellent ce code et il fait le remplissage des colonnes concernées d'un seul clic

    Mais le souci avec ce dernier c'est qu'il ne prend en compte que deux balances. Mon fichier source aura pour chaque mois une balance, ce qui en fera 12 au total.

    Nom : Sans titre.png
Affichages : 383
Taille : 16,3 Ko

    Pourrais-tu également mettre quelques commentaires pour que je puisse comprendre les différentes lignes ?

    Merci encore pour la disponibilité et l'aide apportée.
    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.

  17. #17
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    As-tu testé mon code avec plus de 2 balances ? Ben non, évidemment ! Voir les lignes de code n°4 & 6 …
    Et pourtant j'ai clairement indiqué avant le code : « P'tite démonstration globale traitant toutes les balances présentes » !

    Dans la ligne de code n°10 Application.Match correspond à la fonction de feuille de calculs EQUIV (voir l'aide d'Excel) …

    Pour le reste, mon code suivant exactement la même logique que gFZT82 à partir d'une variable tableau,
    pour tout besoin d'aide sur une instruction, y positionner le curseur texte dans le VBE puis appuyer sur la touche !

    Progresser dans le code en mode pas à pas via la touche F8 tout en contrôlant le contenu de la fenêtre Variables locales
    aide aussi à comprendre son déroulement. Si vraiment cela ne suffit pas, indiques-moi le numéro de la ligne …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  18. #18
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    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 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut
    Bien noté Marc-L, je vais continuer à exploiter ta méthode et je t'informerais de mon avancement.

    Par ailleurs, la proposition de gFZT82 permet de résoudre mon problème ; je passe la discussion en tout en continuant les tests avec ta méthode.

    Merci encore à tous pour votre aide.

    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.

  19. #19
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Pour info, on peut éviter les douze boutons via un double clic sur le nom du mois dans la première feuille de calculs
    en gérant son évènement Worksheet_BeforeDoubleClick
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  20. #20
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    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 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut
    C'est super et c'est un gain de temps. Je vais essayer d'appliquer cette méthode à mon fichier actuel pour voir ce que cela donne.
    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.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Besoin d'aide pour traduire un code NASM en MASM
    Par popol03 dans le forum Assembleur
    Réponses: 2
    Dernier message: 21/05/2007, 18h06
  2. Besoin d'aide pour optimiser du code
    Par scaleo dans le forum Langage
    Réponses: 1
    Dernier message: 07/01/2007, 13h56
  3. [VB.NET] besoin d'aide pour déchiffrer un code
    Par pcdj dans le forum Windows Forms
    Réponses: 10
    Dernier message: 27/06/2006, 11h32
  4. Besoin d aide pour comprendre un code
    Par litlebasic dans le forum Delphi
    Réponses: 4
    Dernier message: 22/06/2006, 13h00
  5. Je besoin d'aide pour terminer mon code
    Par Paulinho dans le forum C++
    Réponses: 7
    Dernier message: 06/11/2005, 23h30

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