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 :

Macro séparation des numéros + somme


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut Macro séparation des numéros + somme
    Bonjour,

    Je viens de créer une macro qui permet de dissocier des numéros d'une cellule de la feuil BG ( cellule source= 233221, cellule après macro = 233 ) sachant que les cellules dans le fichier source contiennet pour le même exemple toujours ( 233221; 233220; 233250 etc...) la macro permet de sommer toute les cellules dont la racine est 233 ( racine de 3 chiffres) sur une autre feuille ( feuille 3CHIFFRE); Les cellules qui comment par un 6 ou 7 sont rassembler dans une feuille à part et subissent le même traitement; Les cellules qui commencent par un 28 sont rassembler dans une feuille à part aussi ( feuille amortissement).

    La macro exploite une feuille (PLANEXPLOIT) ( puiske c'est cette feuille qui contient tout les numéros de compte).

    Description du fonctionnement:

    Au début la macro copie de la feuille (PLANEXPLOIT) tous les numéros de compte à 3 ( pour qu'ils soit expoiter pour la feuille 3CHIFFRE) et à 4 chiffres ( pour leur exploitation dans les feuilles ( Amortissement; CPC ( compte dont les numéros commencent par ( 6 ou 7)); 29-39 ( comptes dont les numéros commence par 29 ou 39) et enfin le 15 ( comptes dans les numéros commenence par un 15).

    Deuxièmement la macro permet d'effectuer une somme:

    -Sommer les compte de 3 chiffres ( ex: 233221; 233250 etc dans un seul compte 233) et les placer dans la feuille 3CHIFFRE

    -Sommer les compte qui commencent par 6 et 7 ( ex: 617413; 617423 etc dans un seul compte à 4 chiffre 6174) et les placer dans la feuille CPC

    -Sommer les comptes qui commence par un 28 ( ex: 283221; 283270 etc.. dans un seul compte à 4 chiffres 2832) et les placer dans la feuille amortissement.

    -Sommer les comptes commence par un 15 ( ex: 151100 dans un compte à 4 chiffres 1511) et les placer dans la fuille 15.

    - Sommer les comptes qui commence par un 39 ou un 29 ( ex 391500; 391501 dans un comptes de 4 chiffres 3915) et les placer dans la feuille 39.29.

    La macro contient une partie pour homogénéiser le fichier source ( elle met tout les numéros de comptes sous un format de 8 chiffres en plaçant des 0).

    La partie sur laquelle je bloque c'est lorsque je lance la macro: elle répartie les comptes sur les toute les feuilles bien comme il faut, mais les sommes dans les feuilles suivantes ne sont bonnes, seul la feuille 3CHIFFRE est fiable (la somme est bonne), toutes les autres feuilles: sur de feuille les somme ne commencent qu'à partir d'une celle donc ça fausse les autres sommes.

    Enfin, théoriquement une fois la somme calculer dans la colonne D, la macro supprimera le détails de calcul dans la colonne C.

    MACRO2.zip

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Par défaut
    Bonjour,
    Pourquoi vouloir vous compliqué la vie pour faire ça avec une macro alors que SOMMEPROD() peut le faire tout simplement?
    Je vous avais déjà soumis cette solution dès votre première demande et la formule fonctionnait.
    Essayez donc cette formule en C2 puis la tirer vers le bas jusque la ligne 370 de la feuille PLANEXPLOIT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(A2<>"";SOMMEPROD((GAUCHE(BG!$A$2:$A$370;NBCAR(PLANEXPLOIT!A2))=PLANEXPLOIT!A2)*(BG!$C$2:$C$370));"")
    Mais c'est évidemment vous qui décidez.

  3. #3
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut
    Salut Rajmin,

    ça ne marche pas en fait qu'on je place la formule dans la cellule C2 de chacune des feuilles tout en modifiant les paramètres.

    L'idéal est de compléter ma macro SVP, vu que les fichiers sur lesquels je travaille le personnel n'est pas trop initier aux fonctions excel encore moins à une fonction "= sommeprod() ou "= somme.si.ens () alors j'ai pensé à réaliser la macro tout en modifiant moi même à chaque fois les feuilles sources et plages.

    SVP j'attend votre retour concernant le point macro sur lequel je bloque.

    MERCI.

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Par défaut
    Re,
    Il y a plusieurs modules dans lequel se trouve la macro à modifier ?
    Est-ce MacroComplète ou NouvelleMacro ?

    Quelle version d'Excel utilisez-vous ?

  5. #5
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut
    Re,

    Le module 3 NouvelleMacro,

    J'utilise un Excel 2010

  6. #6
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Par défaut
    Bonjour,
    Dans la macro qui n'est pas lisible facilement, vous activez les feuilles avec Feuil1.Activate ou Feuilx.Activate
    Seulement j'ai un problème avec cette façon de procédé, quand le regarde l'arborescence de VBA project je vois

    Pièce jointe 142002

    Feuil3 et Feuil10 = BG si on active ces deux feuilles
    Feuil4 et Feuil9 = Plan si on active ces deux feuilles
    Cela n'est pas très clair
    Pourquoi ne pas activer les feuilles par leur nom Sheets("PLAN").Activate par exemple ce serait beaucoup plus lisible
    Les indentations seraient aussi une facilité pour la lecture au lieu de tout mettre à la marge gauche.
    Pourriez-vous SVP expliquez, en français, le déroulement des opérations à réaliser
    Tel que :
    1. Ouvrir telle feuille pour lire ou copier ou coller....
    2. Ouvrir telle autre pour
    etc.

    Si vous aviez mis des commentaires dans votre macro on ne serait pas obligé de poser ces questions.
    Dans les conditions où vous présentez la macro c'est presqu'impossible de suivre le déroulement autrement que par l'exécution pas à pas, mais cela demandera des heures, car il y a plus de 600 lignes dans la macro.

    Je veux bien m'y atteler mais il faut que j'aie l'explication du déroulement des opérations sinon j'abandonne.
    Désolé.

  7. #7
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut
    Bonjour, Rjamin

    Je suis actuellement en déplacement, avec beaucoup de bouleau de coté.

    En attendant, que je mette des commentaires sur la macro est ce ça serai pas possible svp de modéliser une autre macro selon les descriptions que j'ai mise dans le premier message:

    Description du fonctionnement:

    Au début la macro copie de la feuille (PLANEXPLOIT) tous les numéros de compte à 3 ( pour qu'ils soit expoiter pour la feuille 3CHIFFRE) et à 4 chiffres ( pour leur exploitation dans les feuilles ( Amortissement; CPC ( compte dont les numéros commencent par ( 6 ou 7)); 29-39 ( comptes dont les numéros commence par 29 ou 39) et enfin le 15 ( comptes dans les numéros commenence par un 15).

    Deuxièmement la macro permet d'effectuer une somme:

    -Sommer les compte de 3 chiffres ( ex: 233221; 233250 etc dans un seul compte 233) et les placer dans la feuille 3CHIFFRE

    -Sommer les compte qui commencent par 6 et 7 ( ex: 617413; 617423 etc dans un seul compte à 4 chiffre 6174) et les placer dans la feuille CPC

    -Sommer les comptes qui commence par un 28 ( ex: 283221; 283270 etc.. dans un seul compte à 4 chiffres 2832) et les placer dans la feuille amortissement.

    -Sommer les comptes commence par un 15 ( ex: 151100 dans un compte à 4 chiffres 1511) et les placer dans la fuille 15.

    - Sommer les comptes qui commence par un 39 ou un 29 ( ex 391500; 391501 dans un comptes de 4 chiffres 3915) et les placer dans la feuille 39.29.

    La macro contient une partie pour homogénéiser le fichier source ( elle met tout les numéros de comptes sous un format de 8 chiffres en plaçant des 0).

    La partie sur laquelle je bloque c'est lorsque je lance la macro: elle répartie les comptes sur les toute les feuilles bien comme il faut, mais les sommes dans les feuilles suivantes ne sont bonnes, seul la feuille 3CHIFFRE est fiable (la somme est bonne), toutes les autres feuilles: sur de feuille les somme ne commencent qu'à partir d'une celle donc ça fausse les autres sommes.

    Enfin, théoriquement une fois la somme calculer dans la colonne D, la macro supprimera le détails de calcul dans la colonne C.

  8. #8
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Par défaut
    Bonjour,
    Je propose un nouveau programme. Veuillez tester et voir si cela vous convient.
    J'ai mis les valeurs des comptes dans la feuille PlanExploit en Colonne C. Les montants sont calculés d'après la feuille BalGen
    Deux boutons permettent de faire les opérations.
    La feuille PlanExploit est protégée après sa création. Si vous la déprotéger pour effacer et tester sa création n'effacer pas la colonne C mais seulement A et B sinon vous perdez les montants. En cliquant sur le bouton Créer tableau la feuille se remplit avec les données du PLAN et elles sont triées pour que tout soit dans l'ordre. Ne pas effacer la colonne F qui permet le tri sur des valeurs textes car dans A ce sont des valeurs numériques et on peut pas trier la dessus.
    En feuille BalGen un autre bouton permet de créer toutes les autres feuilles.

    A vous de voir.

  9. #9
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut
    Salut Rjamin

    Dsl de n'avoir po pu répondre avant mais j'avais po accès à internet pour checker mes messages.

    Je te remercie en fait pour la macro ça marche parfaitement, mais le problème quand je change de BalGen, exemple ci-joint, ya les compte "Cptes_3ch" partie qui commence avec un 6 et 7 qui ne s'extrait pas et toute la feuille "Cptes_Res_6_7" ne se modifie pas non plus donc je comprend po ou est le problème au juste.
    J'ai pensé peut être que ça provient du fait que sur ma nouvelle BalGen ya 417 lignes et sur l'ancienne y'avé que 207 peut etre qu'à partir de la ligne 207 ça ne s'extrait plus.

    En fait je me connais po trop en tableau variable si tu pe stp modifier la largeur du tableau ( si en effet ça provient de là)

    je met en joint la macro et la nouvelle BalGen ( balance générale) BilanCompta.zipNouvelle BalGen.xlsx

    Merci

    En fait, j'ai ajuster les lignes de manières d'avoir 205 lignes en total mais ce n'est qu'une solution provisoire en attendant ta réponse.

    Je voulais en fait avoir une aide toujours dans le même sens, j'ai une macro dans VBA Project pointage liasse 1; Module 1; tout en dernier Sub rechbilan()

    je rencontre une erreur 1004 ( impossible de lire la fonction Vlookup)

    ci-joint la Macro en fichier, avec les commentaires dedans merci d'avance de ton aide Rajmin.

    Pointage liasse.zip

  10. #10
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Par défaut
    Bonjour,
    Pour BilanCompta.
    Effectivement la formule SOMMEPROD dans PlanExploit s'arrêtait à la ligne 206. J'ai donc nommé les plages et je les ai rendu dynamique. Comme cela la formule s'adapte à la longueur du tableau BalGen.
    La seul chose à surveiller est le nombres de lignes du tableau PlanExploit j'ai tiré la formule jusqu'à la ligne 1000 donc si le tableau dépassait ce nombre de ligne il faudrait tirer la formule plus bas.

    Pour Pointage_Liasse et VLOOCKUP le problème vient de dernièreligne vous calculer derl une fois sur la colonne A et vous vous servez de la valeur (57 ici) dans une boucle FOR mais pour le premier VLOOCKUP ça va jusqu'à la ligne 56 à la 57 il bloque car dans la colonne N il trouve une valeur qui n'existe pas dans la feuille où il cherche.

    Même problème pour le second vous conservez 57 comme valeur or pour les amortissements les codes doivent commencer par 28 et à la 26 ème ligne de la colonne M il trouve 2920 valeur qui n'existe pas dans la feuille Amortissements où il cherche.
    Il faudra penser à une autre façon de calculer la dernière ligne.
    Mais avant essayer en mettant au début de la procédure

  11. #11
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut
    Citation Envoyé par rjamin Voir le message


    Pour Pointage_Liasse et VLOOCKUP le problème vient de dernièreligne vous calculer derl une fois sur la colonne A et vous vous servez de la valeur (57 ici) dans une boucle FOR mais pour le premier VLOOCKUP ça va jusqu'à la ligne 56 à la 57 il bloque car dans la colonne N il trouve une valeur qui n'existe pas dans la feuille où il cherche.

    Même problème pour le second vous conservez 57 comme valeur or pour les amortissements les codes doivent commencer par 28 et à la 26 ème ligne de la colonne M il trouve 2920 valeur qui n'existe pas dans la feuille Amortissements où il cherche.
    Il faudra penser à une autre façon de calculer la dernière ligne.
    Mais avant essayer en mettant au début de la procédure
    J'ai modifier le langage pour donner un nouveau à la dernière ligne ( derl) mais ça ne marche pas non plus. J'ai le même message d'erreur " impossible de lire la fonction Vloockup"

    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 rechbilan()
    'recherche verticale des numéros colonnes N et rapporter en colonne D
    Application.ScreenUpdating = False
    Dim l As Long
    Dim derl As Long
    derl = Worksheets("BILAN").Range("N" & Rows.Count).End(xlUp).Row
    For l = 2 To derl
    If IsEmpty(Range("N" & l)) = False Then
    Sheets("BILAN").Range("D" & l).Value = WorksheetFunction.VLookup(Sheets("BILAN").Range("N" & l).Value, Sheets("Cptes_3ch").Range("A2:C1000"), 3, False)
    End If
    Next
     
     
    End Sub
    Puisque la colonne N est la colonne qui contient la dernière ligne comparée aux autres colonnes, donc j'ai modifié mon langage à ce que la dernière ligne soit calculer sur la dernière cellule de la colonne N.

    SVP est ce vous pouvez voir c'est quoi le problème parce que là j'ai épuiser mes connaissances en ça franchement.

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/04/2011, 18h53
  2. Controle des numéros utilisés
    Par Microquant dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/09/2005, 17h54
  3. [Design] Séparation des couches
    Par brousaille dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 17
    Dernier message: 16/03/2005, 21h34
  4. Réponses: 4
    Dernier message: 16/03/2004, 14h16
  5. Calcul des numéros de semaine d'un calendrier
    Par Invité dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/11/2002, 21h29

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