Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/11/2011, 11h48   #1
Invité de passage
 
Katy Faye Camara
Inscription : avril 2010
Messages : 29
Détails du profil
Informations personnelles :
Nom : Katy Faye Camara

Informations forums :
Inscription : avril 2010
Messages : 29
Points : 3
Points : 3
Par défaut Sous total par suffixe en VBA

Bonjour à tous,

J'ai un petit soucis de code VBA. Je dois faire des sous totaux mais je n'ai pas les mêmes noms dans mes colonnes par contre j'ai les mêmes suffixes.
Pour vous donner une idée: La colonne de référence pour les sous taux est du genre suivant:
Name
iTraxx Europe Series 13 Version 1 3Y
iTraxx Europe HiVol Series 12 Version 1 5Y
iTraxx Europe Series 12 Version 1 5Y
iTraxx Europe HiVol Series 13 Version 1 5Y
iTraxx Europe Series 13 Version 1 5Y
iTraxx Europe HiVol Series 14 Version 1 5Y
iTraxx Europe Series 14 Version 1 5Y
iTraxx Europe Series 13 Version 1 10Y
iTraxx Europe Series 10 Version 1 5Y
iTraxx Europe Series 10 Version 1 10Y
iTraxx Europe Series 11 Version 1 10Y
iTraxx Europe Series 9 Version 1 5Y
iTraxx Europe Series 9 Version 1 7Y
iTraxx Europe Series 11 Version 1 5Y
iTraxx Europe HiVol Series 10 Version 1 5Y
iTraxx Europe Hivol Series 11 Version 1 5Y
iTraxx Europe Crossover Series 12 Version 2 5Y
iTraxx Europe Crossover Series 13 Version 2 5Y
iTraxx Europe Crossover Series 14 Version 1 5Y
iTraxx Europe Crossover Series 12 Version 2 10Y
iTraxx Europe Crossover Series 13 Version 2 10Y
iTraxx Europe Crossover Series 10 Version 5 5Y
iTraxx Europe Crossover Series 11 Version 2 10Y
iTraxx Europe Crossover Series 11 Version 2 5Y

Je dois faire les sous totaux des prix pour tous les :
iTraxx Europe
iTraxx Europe Hivol
iTraxx Europe Crossover

Merci
katypati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 12h24   #2
Membre éclairé
 
Avatar de Nako_lito
 
Développeur .NET
Inscription : mai 2008
Messages : 561
Détails du profil
Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : mai 2008
Messages : 561
Points : 390
Points : 390
pourquoi ne pas découper en colonne ?
__________________
- La dernière fois que j'ai testé ca fonctionnait !
- Vous n'avez rien modifié ?
- Non ! Je suis pas idiot non plus.
- ....
- Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.
Nako_lito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 15h03   #3
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 869
Points : 1 837
Points : 1 837
Bonjour,

Tu dois absolument faire du VBA ? Ce ne sera pas très compliqué mais tu as plus simple en restant dans Excel :

Tu ajoutes une colonne avec la formule (pour un Excel en français) :
Code :
=GAUCHE(A1;CHERCHE("Series";A1)-2)
Si le nom de ta série est dans la première colonne

Ensuite tu fais des SOMME.SI sur cette colonne et les valeurs.

N'hésite pas si tu veux plus de précisions ou vraiment faire du VBA.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 16h07   #4
Membre du Club
 
Homme ilies
comptable
Inscription : octobre 2010
Messages : 109
Détails du profil
Informations personnelles :
Nom : Homme ilies

Informations professionnelles :
Activité : comptable
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : octobre 2010
Messages : 109
Points : 40
Points : 40
Par défaut bonjour

dans la colonne A designation
iTraxx Europe Series 13 Version 1 3Y
iTraxx Europe HiVol Series 12 Version 1 5Y
iTraxx Europe Series 12 Version 1 5Y
iTraxx Europe HiVol Series 13 Version 1 5Y
iTraxx Europe Series 13 Version 1 5Y
iTraxx Europe HiVol Series 14 Version 1 5Y
iTraxx Europe Series 14 Version 1 5Y
iTraxx Europe Series 13 Version 1 10Y
iTraxx Europe Series 10 Version 1 5Y
iTraxx Europe Series 10 Version 1 10Y
iTraxx Europe Series 11 Version 1 10Y
iTraxx Europe Series 9 Version 1 5Y
iTraxx Europe Series 9 Version 1 7Y
iTraxx Europe Series 11 Version 1 5Y
iTraxx Europe HiVol Series 10 Version 1 5Y
iTraxx Europe Hivol Series 11 Version 1 5Y
iTraxx Europe Crossover Series 12 Version 2 5Y
iTraxx Europe Crossover Series 13 Version 2 5Y
iTraxx Europe Crossover Series 14 Version 1 5Y
iTraxx Europe Crossover Series 12 Version 2 10Y
iTraxx Europe Crossover Series 13 Version 2 10Y
iTraxx Europe Crossover Series 10 Version 5 5Y
iTraxx Europe Crossover Series 11 Version 2 10Y
iTraxx Europe Crossover Series 11 Version 2 5Y

dans la colonne B prix
26 900,00
24 938,00
32 875,00
12 706,00
48 938,00
27 941,00
16 994,00
27 991,00
27 052,00
40 951,00
57 311,00
39 054,00
27 306,00
57 236,00
8 690,00
59 347,00
13 070,00
15 970,00
41 644,00
60 747,00
10 031,00
4 403,00
59 089,00
59 433,00

dans la colonne D
iTraxx Europe
iTraxx Europe Hivol
iTraxx Europe Crossover

colonne E les fonctions suivantes

Code :
1
2
3
 =SOMMEPROD((GAUCHE(A2:A25;13)="iTraxx Europe")*(B2:B25)) 
 =SOMMEPROD((GAUCHE(A2:A25;19)="iTraxx Europe Hivol")*(B2:B25)) 
 =SOMMEPROD((GAUCHE(A2:A25;23)="iTraxx Europe Crossover")*(B2:B25))
essayé cet exemple et donne moi ton avis
en plus j'ai un fichier excel comme démonstration
iliesss est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 10/11/2011, 16h20   #5
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
@ iliesss
La première compteras aussi la deuxième et troisième. (le critère est vérifié)
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/11/2011, 16h54   #6
Invité de passage
 
Katy Faye Camara
Inscription : avril 2010
Messages : 29
Détails du profil
Informations personnelles :
Nom : Katy Faye Camara

Informations forums :
Inscription : avril 2010
Messages : 29
Points : 3
Points : 3
Bonjour à tous ,

merci pour vos réponses.

Je dois faire obligatoirement du VBA. Vu que le nombre de ligne est aléatoires il me sera difficil de le figer. Je dois tout automatisé.

merci.
katypati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 17h57   #7
Membre du Club
 
Homme ilies
comptable
Inscription : octobre 2010
Messages : 109
Détails du profil
Informations personnelles :
Nom : Homme ilies

Informations professionnelles :
Activité : comptable
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : octobre 2010
Messages : 109
Points : 40
Points : 40
Par défaut bonjour

salut
si tu veux nous envoyé un fichier demo pour plus de détail et pour que les réponses sont très precis
bon weekend
iliesss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 21h12   #8
Invité de passage
 
Katy Faye Camara
Inscription : avril 2010
Messages : 29
Détails du profil
Informations personnelles :
Nom : Katy Faye Camara

Informations forums :
Inscription : avril 2010
Messages : 29
Points : 3
Points : 3
Bonsoir,

Vous pouvez trouver en pièce jointe un exemple.

J'ai un fichier dont le nombre de ligne est variable. Ce fichier contient plusieurs colonnes et n'est pas ordonné. Ce que je souhaiterai c'est faire la somme par "name" (mais les "names" sont un peu particulier, je n'ai pas les mêmes "names" mais j'ai la même racine).

Une fois les sous totaux faits j'aimerai les reporter dans le même fichier mais à 3 lignes plus bas .

Mon idée est d'abord de faire un tri. Mais je bloque sur le sous total.

Merci
Fichiers attachés
Type de fichier : xls Classeur1.xls (27,5 Ko, 3 affichages)
katypati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 22h38   #9
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Si tu as toujours iTraxx comme début
Code :
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
Sub SousTotal()
Dim LastLig As Long
Dim c As Range
 
Application.ScreenUpdating = False
With Worksheets("Feuil1")
    .AutoFilterMode = False
    .UsedRange.RemoveSubtotal
    LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
    'On extrait l'info qui nous concerne via la formule en colonne A qu'on vient d'insérer temporairement
    .Columns(1).Insert
    With .Range("A2:A" & LastLig)
        .Formula = "=SUBSTITUTE(LEFT(B2,FIND(""Series"",B2)-2),""iTraxx "","""")"
        .Value = .Value
    End With
    'On tri et on réalise notre sous total
    With .Range("A1:C" & LastLig)
        .Sort Key1:=.Range("A2"), Order1:=xlAscending, Header:=xlYes
        .Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(3), Replace:=True, PageBreaks:=False, SummaryBelowData:=True
    End With
    'on reporte l'intitulé des lignes sous totaux (à l'aide d'un filtre automatique et report des intitulé)
    LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
    With .Range("B1:B" & LastLig)
        .AutoFilter Field:=1, Criteria1:=""
        For Each c In .SpecialCells(xlCellTypeVisible)
            c.EntireRow.Font.Bold = True
            If c.Value = "" Then c.Value = c.Offset(0, -1).Value
        Next c
    End With
    .AutoFilterMode = False
    'on supprime la colonne 1
    .Columns(1).Delete
End With
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 23h05   #10
Membre du Club
 
Homme ilies
comptable
Inscription : octobre 2010
Messages : 109
Détails du profil
Informations personnelles :
Nom : Homme ilies

Informations professionnelles :
Activité : comptable
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : octobre 2010
Messages : 109
Points : 40
Points : 40
essayer cet exemple peut être vous aideras
A+

PS : un grand merci pour Mr mercatog c'est impressionnant ton code c'est la vérité.

-
Fichiers attachés
Type de fichier : xls Classeur1 N2.xls (58,0 Ko, 3 affichages)
iliesss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 01h10   #11
Invité de passage
 
Katy Faye Camara
Inscription : avril 2010
Messages : 29
Détails du profil
Informations personnelles :
Nom : Katy Faye Camara

Informations forums :
Inscription : avril 2010
Messages : 29
Points : 3
Points : 3
Merci à tous!

La macro proposé par Mercatog marche seulement j'ai un soucis avec le total du sous total. il se trouve à presque 500 lignes plus bas.

merci pour votre aide.

Re bonsoir!

Une fois les sous totaux obtenus je crée un onglet de synthèses qui contient entre autre les sous totaux.
pour le faire j'utilise la formule index associé à équiv:
Code :
1
2
 
INDEX(feuil1!$A$5:$P$2088;EQUIV("Total Europe";feuil1!A5:A2088;0);17)
mais à chaque fois que j'éxécute la macro permettant de générer le sous total mes formules ne marche plus.

Est ce que quelqu'un a une idée.

Merci
katypati est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h29.


 
 
 
 
Partenaires

Hébergement Web