Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
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/01/2011, 16h47   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 1
Points : 1
Par défaut Subtotal avec clé de rapprochement

Bonjour à tous,

Tout d'abord, meilleurs voeux pour l'année 2011 !

Parmi mes bonnes résolutions de cette nouvelle année c'est d'apprendre le VBA Excel Je suis débutant dans ce domaine et je galére depuis une semaine pour faire une macro simple !

L'objectif de ma macro est de colorer en Jaune les cellules de la colonne C dont la somme des montants est égale à zéro. Sachant que la clé de rapprochement à utiliser dépend des données existant dans les colonnes A, B et D.

Je joins un fichier qui contient mes données.

Ce que je voulais faire : Pour une clé de rapprochement (Ptf, Dev, abs(BA)), si subtotal(BA) = 0 => Colorer en Jaune les cellules coreespondantes de la colonne C.

Voici ma macro qui ne fonctionne pas :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Subtotal()
 
Dim Ptf As Range
Dim Dev As Range
Dim BA As Range
Dim abs(BA) As Range
 
Set Ptf = Range("A1")
Set Dev = Range("B1")
Set BA = Range("C1")
Set abs(BA) = Range("D1")
 
For Each xPtf  In Ptf 
For Each xDev In Dev
For Each xabs(BA) In abs(BA)
 
If BA.Formula = "=SUM(Range(C:C)) = 0" Then BA.Interior.Color = vbYellow
 
Next
Next
Next
 
End Sub
Est ce qu'il faut utiliser la boucle For... ?

Juste pour info. toutes les données de mon tableau sont variables hormi le nombre des colonnes.

Pourriez vous svp m'éclairer ?

Merci par avance
Fichiers attachés
Type de fichier : xls Subtotal.xls (11,2 Ko, 1 affichages)
somed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 17h15   #2
Membre Expert
 
Avatar de wilfried_42
 
Homme Wilfried
Auto-entrepreneur
Inscription : novembre 2006
Messages : 1 428
Détails du profil
Informations personnelles :
Nom : Homme Wilfried
Âge : 50
Localisation : France, Vendée (Pays de la Loire)

Informations professionnelles :
Activité : Auto-entrepreneur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2006
Messages : 1 428
Points : 1 859
Points : 1 859
Bonjour,

ton fichier est sous quel format, je vois xls mais il n'est pas reconnu comme une version 2003 ou inferieure.

Un suggestion : ne serait ce pas plus facile avec une mise en forme conditionnelle ?
__________________
Wilfried
wilfried_42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 17h16   #3
Expert Confirmé
 
Avatar de JML19
 
Homme Jean Michel
Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
Inscription : décembre 2010
Messages : 2 166
Détails du profil
Informations personnelles :
Nom : Homme Jean Michel
Localisation : France, Corrèze (Limousin)

Informations professionnelles :
Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
Secteur : Transports

Informations forums :
Inscription : décembre 2010
Messages : 2 166
Points : 3 221
Points : 3 221
Bonjour

Il y a une option Excel qui sert à cela dans le Menu - Format - Mise en forme conditionnelle de Excel 2002 et 2003.
JML19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 18h02   #4
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 1
Points : 1
Je travaille sur Excel 2007, mon fichier est de type .xlsx

Quand j'ai voulu télécharger mon doc pour le mettre à votre disposition je n'ai pas réussi et j'ai eu un message d'erreur ("Format non valide") !!!

voici le fichier en format .txt

Merci
somed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 16h42   #5
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 1
Points : 1
Bonjour,

Enfin, j'ai trouvé une solution. Par contre, l'exécution de la macro est un peu lente (1 000 lignes => 1 min). Pourquoi ma macro n'est pas assez rapide ? Est ce que c'est normal ? Peut-on l'améliorer ?

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
35
36
37
38
39
40
41
Sub Colorier()
 
Dim startcell1 As Range
Set startcell1 = Range("A2")
 
Dim startcell2 As Range
Set startcell2 = Range("A2")
 
 
Dim subtotal As Currency
 
 
While startcell1.Value <> ""
 
    subtotal = 0
 
    While startcell2.Value <> ""
 
 
        If startcell1.Offset(0, 0).Value = startcell2.Offset(0, 0).Value And startcell1.Offset(0, 1).Value = startcell2.Offset(0, 1).Value Then
 
            subtotal = subtotal + startcell2.Offset(0, 2).Value
 
        End If
 
        Set startcell2 = startcell2.Offset(1, 0)
 
    Wend
 
    If subtotal = 0 Then
 
         startcell1.Offset(0, 2).Interior.Color = 65535   'Couleur Jaune
 
    End If
 
    Set startcell2 = Range("A2")
    Set startcell1 = startcell1.Offset(1, 0)
 
Wend
 
End Sub
Merci
Fichiers attachés
Type de fichier : zip colorier.zip (38,5 Ko, 0 affichages)
somed 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 19h01.


 
 
 
 
Partenaires

Hébergement Web