création de liste automatique

cyr

XLDnaute Junior
Bonjour,

Explication de la sutiation, j'ai demandé de l'aide pour colorer des cellules automatiquement. On a réglé en parti mon souci mais, je m'aperçois que je n'ai pas forcément fait le bon choix (coloration de cellule).

Donc, je vais essayer d'exprimer une nouvelle demande :

Serait-il possible par rapport à un tableau où il y a des sous-totaux (correspondant à un nombre de ligne par adresse) d'extraire les adresses (colonne B ou prendre les données de la colonne A) qui ont TOUTES leurs dates (colonne L) < à 01/01/2011 (par exemple) et de laisser les adresses dont au moins une date est > à 01/01/2011 ? Et faire la liste dans un autre onglet.

PS : Si c'est plus simple enlever les sous totaux ?
 

Pièces jointes

  • Copie de Classeur1 - résultat voulu.xls
    30 KB · Affichages: 110
  • Copie de Classeur1 - résultat voulu.xls
    30 KB · Affichages: 108
  • Copie de Classeur1 - résultat voulu.xls
    30 KB · Affichages: 111

JNP

XLDnaute Barbatruc
Re : création de liste automatique

Re :),
Donc par VBA
Code:
Sub Macro1()
Dim Plage As Range, I As Integer, PremLigne As Integer
I = 1
While Cells(I, 1) <> ""
If Cells(I, 1).Font.Bold Then
If Plage Is Nothing Then
Set Plage = Cells(I, 1)
PremLigne = I
Else
Set Plage = Union(Plage, Cells(I, 1))
End If
End If
I = I + 1
Wend
Plage.FormatConditions.Delete
Plage.FormatConditions.Add Type:=xlExpression, Formula1:="=$K" & PremLigne & "<40544"
Plage.FormatConditions(Plage.FormatConditions.Count).SetFirstPriority
With Plage.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .Color = 49407
    .TintAndShade = 0
End With
Plage.FormatConditions(1).StopIfTrue = True
End Sub
sous réserve que ton tableau soit identique.
La base : il ne traite que les cellules en gras qu'il additionne dans Plage. Puis il applique la formule sur toutes les cellules de Plage.
Je te mets le fichier en PJ. Tu ouvres l'éditeur VBA (Alt+F11) et en se cliquant dans la macro, tu fais F5.
Bon courage :cool:
 

Pièces jointes

  • MFC.xls
    68 KB · Affichages: 67
  • MFC.xls
    68 KB · Affichages: 69
  • MFC.xls
    68 KB · Affichages: 67

JNP

XLDnaute Barbatruc
Re : création de liste automatique

Re :),
Je te remercie pour cette macro. Je l'ai essayé mais il y a quand même des dates qui sont sélectionnées par erreur.
Qu'entends-tu par là ?
La macro ne sélectionne pas de date, mais les entêtes de sous-total.
Elle se base sur le gras, donc, s'il n'y a pas d'erreur de gras, la macro ne doit pas faire d'erreur...
Bonne journée :cool:
 

JNP

XLDnaute Barbatruc
Re : création de liste automatique

Re :),
En fait, la macro selectionne une partie des sous-totaux en gras mais en fonction d'une date ??? sinon, je pense qu'elle surlignerai tout ?? Est ce que j'ai bien compris ?
La macro sélectionne TOUT les gras, leur applique la MFC demandée, c'est à dire en fonction de la date en K (issue du MAX du sous-total) mets en orange si la date est < 01/01/2011.
C'est bien ce que tu souhaitais, non ?
Bonne journée :cool:
 

cyr

XLDnaute Junior
Re : création de liste automatique

Bonjour,

Oui, c'est ce que je veux. Est ce que mon souci peu venir du fait que j'exécute la macro1 sous excel 2007 ?
Ce matin, j'essaie de l'ouvrir au boulot (excel 2003) mais il me met une erreur '438'

J'essayerais de mettre une copie d'écran ce soir du résultat que j'obtient avec 2007.
 

JNP

XLDnaute Barbatruc
Re : création de liste automatique

Re :),
Je suis sous 2007, donc pas de problème avec 2007. Avec 2003, les MFC (comme déjà dit dans l'autre post) ne sont pas gérées pareil. Donc la macro plante sous 2003, c'est normal.
On verra ta copie d'écran.
A + :cool:
 

JNP

XLDnaute Barbatruc
Re : création de liste automatique

Re :),
C'est vrai que la MFC se comporte bizarrement :confused:.
J'ai simplifié la macro
Code:
Sub Macro1()
Dim Plage As Range, I As Integer, PremLigne As Integer
I = 1
While Cells(I, 1) <> ""
If Cells(I, 1).Font.Bold Then
If Cells(I, 11) < 40544 Then Cells(I, 1).Interior.Color = 49407
End If
I = I + 1
Wend
End Sub
comme ça, ça se contente de mettre de la couleur et ça marche, même sur 2003.
Bonne soirée :cool:
 

cyr

XLDnaute Junior
Re : création de liste automatique

je viens de le faire avec mon fichier et il me met un message d'erreur :

erreur d'execution '6' :
dépassement de capacité

Et quand je vais dans le débogage il me surligne la ligne : I = I + 1

???
 

JNP

XLDnaute Barbatruc
Re : création de liste automatique

Re :),
Code:
Sub Macro1()
Dim I As [B][COLOR=red]Long[/COLOR][/B]
I = 1
While Cells(I, 1) <> ""
If Cells(I, 1).Font.Bold Then
If Cells(I, 11) < 40544 Then Cells(I, 1).Interior.Color = 49407
End If
I = I + 1
Wend
End Sub
Désolé, Integer est limité à 32 767 :eek:, Long lui va jusque 2 147 483 647, ça ne devrait plus coincer :p...
J'en ai profité pour supprimer Plage et PremLigne qui ne servait plus à rien :rolleyes:.
Bon courage :cool:
 

cyr

XLDnaute Junior
Re : création de liste automatique

j'ai testerai ce soir et je te tiens au courant car j'ai pas ce qu'il faut au boulot.

Est ce que tu sais si après la macro, le tri par rapport à la couleur prend uniquement les lignes surlignées ou l'ensemble des lignes liées au résultat du sous-total ?
 

Discussions similaires

Statistiques des forums

Discussions
312 749
Messages
2 091 644
Membres
105 010
dernier inscrit
sam333