Problème avec ordre des macros multiples...  Sujet résolu

Pour toutes vos questions à propos d'Excel ...

Messagepar Nad-Dan » 14 Août 2009, 11:30

Re,

Pour le bouton : je souhaiterais qu'en cliquant dessus cela exécute plusieurs macros (noms_feuilles, onglets, test) pour que la feuille récapitulative se mette à jour.

C'est que le bouton "mise à jour abo" fait non ? Je n'ai pas pb à ce sujet dans le fichier que tu as posté. Vois si le lien de ton bouton CommandButton1_Click() est toujours bien lié avec cette macro.

onglets soit par ordre alphabétique

Utilise la macro ci-dessous
Code: Tout sélectionner
Sub TrierFeuilles()
Dim WS As Worksheet
Dim I As Byte
Application.ScreenUpdating = False
For Each WS In ActiveWorkbook.Sheets
For I = 2 To ActiveWorkbook.Sheets.Count
If Sheets(I - 1).Name > Sheets(I).Name Then
Sheets(I - 1).Move After:=Sheets(I)
End If
Next
Next
End Sub

..la cellule de l'abonnement se mette en rouge et aussi la cellule où il y a le nom...

Cela doit se faire via le bouton "mise à jour abo" ?
Est-ce toi qui entre le chiffre en colonnes D, G et J ?

Attention à tes boutons qui sont dessinés par la boite outils de controles plutot que via la barre d'outils Formulaire. Ce n'est pas grave si ton fichier fonctionne uniquement sous windows mais sache que si ton fichier doit être porté sur un ordinateur MAC, cela ne fonctionnera pas.

A te relire

Dan
Nad-Dan
Modérateur
 
Messages: 7309
Inscription: 27 Avr 2007, 15:30
Localisation: Nad à Dax (France) - Dan à Liège (Belgique)
Version Excel: 2003 FR-2007 FR-MAC 2004 FR

Messagepar silvia » 14 Août 2009, 11:51

Pour le bouton "mise à jour abo", ça fonctionne bien mais le soucis c'est que si on va sur le dernier onglet crée ça liste aussi les onglets. J'ai donc la mise à jour de la liste sur la feuille "Récapitulatif" mais aussi sur le dernier onglet crée, ce qui me modifie ma feuille...

Pour la couleur, idéalement j'aurais voulu que cela se fasse automatiquement mais sinon, je me disais que vu que la mise à jour des chiffres pour les abonnements se fait via le bouton, autant le faire en même temps.

Les chiffres en colonnes D, G et J se font par la macro "test".

Merci!
Silvia
silvia
Jeune membre
 
Messages: 28
Inscription: 28 Avr 2009, 16:11
Version Excel: 2007 FR

Messagepar Nad-Dan » 14 Août 2009, 12:42

re,

Code: Tout sélectionner
si on va sur le dernier onglet crée ça liste aussi les onglets. J'ai donc la mise à jour de la liste sur la feuille "Récapitulatif" mais aussi sur le dernier onglet crée, ce qui me modifie ma feuille...

Je ne vois pas comment tu fais pour aller sur la dernière feuille puisque ton bouton est sur la feuille Récapitulatif. Seul souci, c'est si tu actualises tes liens par la macro Onglets seule en étant sur une autre feuille.

Pour te prémunir, mets l'instruction ci-dessous dans la macro onglets juste après DIM I AS BYTE
Code: Tout sélectionner
Sheets("Récapitulatif").Activate


Je reviens pour le reste

Amicalement

Dan

edit Dan :
Pour les couleurs en feuille Récapitualif, essaie ce code :
Code: Tout sélectionner
Sub couleur()
'Macro Dan pour Silvia le 13/08/09
'http://forum.excel-pratique.com/viewtopic.php?t=12800
Dim cel As Range
Application.ScreenUpdating = False
Sheets("Récapitulatif").Activate
For Each cel In Sheets("Récapitulatif").Range("A6:A" & Range("A65536").End(xlUp).Row)
With cel
.Offset(0, 2) = Sheets(cel.Value).Range("L13")
.Offset(0, 3) = Sheets(cel.Value).Range("M13")
    If .Offset(0, 3) <= 2 Then
    Union(.Offset(0, 0), .Offset(0, 3)).Interior.ColorIndex = 3
    Else: .Offset(0, 3).Interior.ColorIndex = 0
    End If
.Offset(0, 5) = Sheets(cel.Value).Range("L28")
.Offset(0, 6) = Sheets(cel.Value).Range("M28")
    If .Offset(0, 6) <= 2 Then
    Union(.Offset(0, 0), .Offset(0, 6)).Interior.ColorIndex = 3
    ElseIf .Offset(0, 3).Interior.ColorIndex = 3 Then
    .Offset(0, 6).Interior.ColorIndex = 0
    Else: Union(.Offset(0, 0), .Offset(0, 6)).Interior.ColorIndex = 0
    End If
.Offset(0, 8) = Sheets(cel.Value).Range("L43")
.Offset(0, 9) = Sheets(cel.Value).Range("M43")
    If .Offset(0, 9) <= 2 Then
    Union(.Offset(0, 0), .Offset(0, 9)).Interior.ColorIndex = 3
    ElseIf .Offset(0, 3).Interior.ColorIndex = 3 Or .Offset(0, 6).Interior.ColorIndex = 3 Then
    .Offset(0, 9).Interior.ColorIndex = 0
    Else: Union(.Offset(0, 0), .Offset(0, 9)).Interior.ColorIndex = 0
    End If
End With
Next cel
End Sub

Amicalement

Dan
Nad-Dan
Modérateur
 
Messages: 7309
Inscription: 27 Avr 2007, 15:30
Localisation: Nad à Dax (France) - Dan à Liège (Belgique)
Version Excel: 2003 FR-2007 FR-MAC 2004 FR

Messagepar silvia » 14 Août 2009, 15:51

Hello¨

Pour les cases en couleur c'est nickel, exactement ce que je voulais!!!! J'avais trouvé un code mais avec des union... et c'était un peu la pagaille:

Sub Color()


Dim Cell As Range
For Each Cell In Union(Range(Range("D6"), Range("D65000").End(xlUp)), Range(Range("G6"), Range("G65000").End(xlUp)), Range(Range("J6"), Range("J65000").End(xlUp)))
Select Case Cell.Value
Case Is <= "2"
Cell.Interior.ColorIndex = 3
Case Is > "2"
Cell.Interior.ColorIndex = xlNone
End Select
Next
End Sub

Par contre, je viens me rendre compte que tout ce qui est à 0 vient en rouge alors qu'il se peut que certains clients n'ai pas d'abonnement pour une des catégories d'activité... Faut que je réfléchisse à une solution mais c'est pour plus tard!


Par contre j'ai un petit soucis avec le tri des onglets, donc le tri fonctionne bien mais il prend également en compte le récapitulatif et le modèle: est-il possible de toujours les laisser devant et d'ensuite mettre le reste par odre alphabétique.

merci!!!
Silvia
silvia
Jeune membre
 
Messages: 28
Inscription: 28 Avr 2009, 16:11
Version Excel: 2007 FR

Messagepar Nad-Dan » 14 Août 2009, 16:08

re,

je viens me rendre compte que tout ce qui est à 0 vient en rouge

Si tu veux que cela reste blanc, on peut adapter le code.

récapitulatif et le modèle: est-il possible de toujours les laisser devant

Oui, dans le code, FOR I = 2, remplace 2 par 4

Amicalement

Dan

Edit Dan :
Pour les couleurs à valeur 0, Dans la macro couleur, remplace l'instruction
Code: Tout sélectionner
If .Offset(0, 3) <= 2 then

par
Code: Tout sélectionner
If .Offset(0, 3) <= 2 And .Offset(0, 3) > 0 Then


Idem pour les valeurs 6 et 9 plus bas

Dan
Nad-Dan
Modérateur
 
Messages: 7309
Inscription: 27 Avr 2007, 15:30
Localisation: Nad à Dax (France) - Dan à Liège (Belgique)
Version Excel: 2003 FR-2007 FR-MAC 2004 FR

Messagepar silvia » 14 Août 2009, 16:32

Si tu veux que cela reste blanc, on peut adapter le code.


pas forcément car du coup les abonnements arrivé à terme seront en blanc et du coup pas visible; je réflichi à une solution du style: reprise de la valeur dans le récap seulement si l'abo a été activé sur la fiche client. :cry:

Oui, dans le code, FOR I = 2, remplace 2 par 4


j'ai remplacé par 4 mais ça marchait pas donc testé (vu que je sais pas à quoi ça correspond) et remplacé par 3 et ça joue.

merci et A+
Silvia
silvia
Jeune membre
 
Messages: 28
Inscription: 28 Avr 2009, 16:11
Version Excel: 2007 FR

Précédente

Retourner vers Excel - VBA

 


  • Sujets similaires
    Réponses
    Vus
    Dernier message

Utilisateurs en ligne

Utilisateurs parcourant ce forum: Bing [Bot], Google [Bot], Google Adsense [Bot] et 7 invités