Sous-totaux

Bonjour le forum,

Je cherche désespérément une façon de programmer en VBA des sous-totaux un peu spéciaux.

Pour une meilleure compréhension, j'ai joint un fichier exemple à ce post.

En partant de la feuille "Budget1" remplie à partir d'une macro, je voudrais écrire pour chaque code de la feuille "Budget1", une seule ligne de total sur la feuille "Budget2" en reprenant l'intitulé du code qui se trouve sur la feuille "Codification" (qui se trouve en réalité dans un autre classeur).

Les codes de crédit de 100 à 220 devraient se positionner dans la partie droite de la feuille"Budget2", et les débits dans la partie gauche de la feuille "Budget2".

Un total débit et crédit sur la feuille "Budget2" en bas.

De plus l'utilisation de la fonction sous-total ne me convient pas telle quelle.

J'ai rempli la feuille "Budget2" telle que je souhaiterais qu'elle apparaisse, ce qui est sûrement beaucoup plus parlant que mes explications.

Merci à vous

Cordialement

Joseph

22budget.xlsm (21.53 Ko)

Bonjour

Un essai. Te convient-il ?

24budget-v1.xlsm (44.40 Ko)

Bonjour gmb, le forum,

Euh........WAOUH !!!

Si je m'attendais à un tel résultat! C'est tout à fait ça.

Toutefois, si je peux buser sans abuser....

En réalité, la feuille "Codification" se trouve dans le classeur "Directeur.xlsm" qui pilote tous les autres classeurs.

Est il possible de chercher les codes et leurs intitulés sur la feuille "Codification" du classeur "Directeur.xlsm", ou dois-je copier la feuille "Codification" sur tous les classeurs qu'il ouvre ?.

Option explicit et les déclarations avant le "Sub Lancer()" cela sert à quoi?

Sub Lancer() et Private sub Lancer(), quelle différence (chez moi c'est toujours Private suivi du nom)

TabCodes() c'est quoi ?

For i = 1 To UBound(TabCodes), je suis désolé mais là je me noie...

En tous les cas, c'est formidable.

Je n'aurais jamais trouvé avec mes For I to, mes If, etc.

Merci infiniment.

Joseph

Bonjour

Ci-joint la nouvelle version avec 2 classeurs.

Tu écris :

Option explicit … cela sert à quoi?

Cela sert à s’obliger de déclarer les variables.

On peut les déclarer dans une même procédure, entre, « Sub xxx » et « End Sub ». Dans ce cas, les variables utilisées ne servent que dans cette procédure.

On peut aussi les déclarer en dehors, ce que je fais généralement. Cela me permet de limiter leur nombre quand j’ai plusieurs procédures sur le même module.

Pourquoi déclarer les variables ?

En principe, quand on déclare une variable, on définit son type. Ex :

Dim Ln as Integer , Dte as Date , Nom as Variant

Cela permet à Visual Basic d’allouer au mieux la taille mémoire de la variable selon qu’il sagit d’un nombre entier, d’une date ou d’un texte

A défaut de définir le type, la variable est considérée par défaut comme Variant et s’adapte en fonction de la donnée qu’elle reçoit.

Pour ma part, je m’impose de déclarer mes variables pour mieux les gérer : si je mets une nouvelle variable sans la déclarer, Excel me la signale dès que je lance la macro. Et j’ai en permanence la liste des variables déjà utilisées.

Tu écris encore :

Sub Lancer() et Private sub Lancer(), quelle différence

Les macros Private sub sont des macros qui ne sont lancées que à partir de la feuille où elles sont écrites. Quand on fait « Développeur – Macros » on ne trouve pas cette macro dans la liste.

Les macros Sub sont des macros écrites sur des modules et peuvent donc être déclenchées depuis n’importe quelle feuille : elles apparaissent dans la liste quand on fait « Développeur – Macros »

TabCodes() c'est quoi ?

C’est une variable dite « Tableau ». Ce genre de variable permet de stocker sous un même nom une grande quantité de données.

Pour plus de détails sur toutes ces questions, je ne saurai trop te recommander le « COURS VBA » de ce forum qui est très bien fait : voir le menu en tête de la page d’accueil.

Bye !

17budget-v2.xlsm (40.90 Ko)
18directeur.xlsm (18.77 Ko)

Bonjour gmb, le forum,

Pour le dire en chanson : Formidable, fo ormidable, tu étais formidable, j'étais........

Je l'ai intégré dans le vrai fichier, et c'est impeccable.

Je vais retourner sur le Cours VBA (et dans mes livres), mais combien il est vrai qu'expliquer comme tu as eu la gentillesse de le faire est bien plus facile à comprendre, surtout avec le cas concret devant les yeux.

Grâce à ton aide, ce post est donc résolu.

Merci infiniment

Joseph

Rechercher des sujets similaires à "totaux"