Forums XLPages

Tous les messages (criscris11)

1 2 3 »
Re: Boucler sur plusieurs labels
#1
Aspirant XLPages

Inscription: 12/07/2008
De RENNES

Messages: 30

Système d'exploitation:
PC
Version Excel utilisée:
2003 FR
Posté le : 24-07-2012 11h49
Bonjour Didier, le forum,
J'ai bien pris en compte tes remarques. Effectivement, le fil a été résolu mais je l'ai réactivé par la suite : dans ce cas à quoi sert cette option si ce n'est qu'à réactiver un fil résolu ? Je pense que ma question faisait suite à ma première demande (je ne sortais pas du filtre automatique). Enfin bon, mea culpa.

Merci pour toute ton aide et ta patience et je ferais en sorte de ne plus t'importuner : dommage j'apprenais bien avec toi.

Sur ce bonne continuation.
Hors Ligne
Rapport   Haut 

Re: Boucler sur plusieurs labels
#2
Aspirant XLPages

Inscription: 12/07/2008
De RENNES

Messages: 30

Système d'exploitation:
PC
Version Excel utilisée:
2003 FR
Posté le : 23-07-2012 23h49
Bonsoir Didier, tous,

Je viens de tester et tout est nickel une fois de plus : perso j'étais un peu loin du compte.
Merci de me faire partager ton savoir car je demande pas mal en ce moment mais c'est pour apprendre aussi.

Bonne soirée à toi et à tous.

PS : pas d'idées sur mon fil précédent ?
Hors Ligne
Rapport   Haut 

Boucler sur plusieurs labels
#3
Aspirant XLPages

Inscription: 12/07/2008
De RENNES

Messages: 30

Système d'exploitation:
PC
Version Excel utilisée:
2003 FR
Posté le : 23-07-2012 21h17
Bonsoir,
J'utilise dans un USF plusieurs labels afin de récupérer des données provenant d'une feuille de calcul (petite base de données). Dans une partie de cet USF, je récupère certaines données identiques dans 6 labels nommés Label64 à Label69 avec ceci :

Me.Label64.Caption = Sheets("Base gestion MDR").Cells(NomOK(ligne), "BI")
   If Label64.Caption = "Oui" Then
   Label64.BackColor = RGB(0, 255, 0)
   ElseIf Label64.Caption = "Ajourné" Then
   Label64.BackColor = RGB(255, 102, 0)
   ElseIf Label64.Caption = "Abandon" Or Label64.Caption = "Echec" Then
   Label64.BackColor = RGB(255, 0, 0)
   Else
   Label64.BackColor = RGB(255, 255, 255)
   Label64.Caption = "Non"
   End If
   Me.Label65.Caption = Sheets("Base gestion MDR").Cells(NomOK(ligne), "BJ")
   If Label65.Caption = "Oui" Then
   Label65.BackColor = RGB(0, 255, 0)
   ElseIf Label65.Caption = "Ajourné" Then
   Label65.BackColor = RGB(255, 102, 0)
   ElseIf Label65.Caption = "Abandon" Or Label65.Caption = "Echec" Then
   Label65.BackColor = RGB(255, 0, 0)
   Else
   Label65.BackColor = RGB(255, 255, 255)
   Label65.Caption = "Non"
   End If
   Me.Label66.Caption = Sheets("Base gestion MDR").Cells(NomOK(ligne), "BK")
   If Label66.Caption = "Oui" Then
   Label66.BackColor = RGB(0, 255, 0)
   ElseIf Label66.Caption = "Ajourné" Then
   Label66.BackColor = RGB(255, 102, 0)
   ElseIf Label66.Caption = "Abandon" Or Label66.Caption = "Echec" Then
   Label66.BackColor = RGB(255, 0, 0)
   Else
   Label66.BackColor = RGB(255, 255, 255)
   Label66.Caption = "Non"
   End If
   Me.Label67.Caption = Sheets("Base gestion MDR").Cells(NomOK(ligne), "BL")
   If Label67.Caption = "Oui" Then
   Label67.BackColor = RGB(0, 255, 0)
   ElseIf Label67.Caption = "Ajourné" Then
   Label67.BackColor = RGB(255, 102, 0)
   ElseIf Label67.Caption = "Abandon" Or Label67.Caption = "Echec" Then
   Label67.BackColor = RGB(255, 0, 0)
   Else
   Label67.BackColor = RGB(255, 255, 255)
   Label67.Caption = "Non"
   End If
   Me.Label68.Caption = Sheets("Base gestion MDR").Cells(NomOK(ligne), "BM")
   If Label68.Caption = "Oui" Then
   Label68.BackColor = RGB(0, 255, 0)
   ElseIf Label68.Caption = "Ajourné" Then
   Label68.BackColor = RGB(255, 102, 0)
   ElseIf Label68.Caption = "Abandon" Or Label68.Caption = "Echec" Then
   Label68.BackColor = RGB(255, 0, 0)
   Else
   Label68.BackColor = RGB(255, 255, 255)
   Label68.Caption = "Non"
   End If
   Me.Label69.Caption = Sheets("Base gestion MDR").Cells(NomOK(ligne), "BN")
   If Label69.Caption = "Oui" Then
   Label69.BackColor = RGB(0, 255, 0)
   ElseIf Label69.Caption = "Ajourné" Then
   Label69.BackColor = RGB(255, 102, 0)
   ElseIf Label69.Caption = "Abandon" Or Label69.Caption = "Echec" Then
   Label69.BackColor = RGB(255, 0, 0)
   Else
   Label69.BackColor = RGB(255, 255, 255)
   Label69.Caption = "Non"
   End If
Je sais que je pourrais faire une boucle pour alléger le code et le rendre plus lisible mais je sèche un peu, j'avoue.
A noter qu'il faut déclarer les variables (Option Explicit), que ces 6 labels possèdent un tag nommé Lbl, qu'ils sont tous dans le même Frame mais avec d'autres labels.
J'espère avoir été assez explicite et merci par avance.
Bonne soirée.
Hors Ligne
Rapport   Haut 

Re: Problème de détection si filtre auto est présent
#4
Aspirant XLPages

Inscription: 12/07/2008
De RENNES

Messages: 30

Système d'exploitation:
PC
Version Excel utilisée:
2003 FR
Posté le : 17-07-2012 00h46
Re,
Comme un problème n'arrive jamais seul, je suis en train de tourner en rond depuis plus d'une heure avec un code sur un ToggleButton.
Voici ce code :
Private Sub ToggleButton2_Click()
If ToggleButton2.Caption = "Présence du filtre auto" Then
ActiveSheet.AutoFilterMode = False
ToggleButton2.Caption = "Absence du filtre auto"
ToggleButton2.ControlTipText = "Cliquer pour réactiver le filtre auto"
Else
ToggleButton2.Caption = "Absence du filtre auto"
ActiveSheet.AutoFilterMode = True
Application.Run "Filtre_Auto"
ToggleButton2.Caption = "Présence du filtre auto"
ToggleButton2.ControlTipText = "Cliquer pour désactiver le filtre auto"
End If
End Sub
 
Pour comprendre un peu mieux, voici le code de mon formulaire :
'___________________________'
'Intialisation du formulaire
'___________________________'

Private Sub UserForm_Initialize()
Dim i As Long
 Me.ListBox1.List = Range("Noms").Resize(, 2).Value
 Erase NomOK: ReDim NomOK(1 To Range("Noms").Rows.Count)
 For i = 1 To Range("Noms").Rows.Count: NomOK(i) = Range("Noms").Row + i - 1: Next i
 Label21.Caption = Format(Date, "dddd d mmmm yyyy") 'affiche la date du jour dans un label
 Me.MultiPage1.Value = 0 'se positionne sur la 1ère page du contrôle multipages
 Me.TextBox1.SetFocus 'positionne le curseur sur la zone de texte de la recherche intuitive
 
    If Application.Calculation = xlCalculationAutomatic Then
    ToggleButton1.Caption = "Calcul automatique"
    ToggleButton1.ControlTipText = "Cliquer pour changer le mode de calcul"
    Else
    Application.Calculation = xlCalculationManual
    ToggleButton1.Caption = "Calcul sur ordre"
    ToggleButton1.ControlTipText = "Cliquer pour changer le mode de calcul"
    End If
   
    If ActiveSheet.AutoFilterMode = True Then
    ToggleButton2.Caption = "Présence du filtre auto"
    ToggleButton2.ControlTipText = "Cliquer pour désactiver le filtre auto"
    Else
    ActiveSheet.AutoFilterMode = False
    ToggleButton2.Caption = "Absence du filtre auto"
    ToggleButton2.ControlTipText = "Cliquer pour activer le filtre auto"
    End If
   
    If ActiveSheet.FilterMode = True Then
    CommandButton8.Caption = "Mode filtre"
    CommandButton8.ControlTipText = "Cliquer pour remettre tous les filtres à zéro"
    CommandButton8.Enabled = True
    Else
    ActiveSheet.FilterMode = False
    CommandButton8.Caption = "Aucun filtre actif"
    CommandButton8.Enabled = False
    End If
End Sub
 
Mon problème est le suivant : quand je clique sur mon ToggleButton2 si condition 1, le filtre auto s'enlève bien mais mon formulaire se ferme automatiquement et à la réouverture de ce dernier je perds toute l'initialisation du formulaire, cerise sur le gâteau impossible de le fermer sauf un kill sauvage (CTRL+ALT+SUPPR) seul moyen de quitter Excel.
Quand je clique sur mon ToggleButton2 si condition 2, j'ai une erreur '1004'. J'ai également essayer sans la ligne :
...
ActiveSheet.AutoFilterMode = False
...
et là cela fonctionne sauf les icônes des filtres ne s'affichent pas (les triangles noirs) et rebelote fermeture du formulaire...

Pour info, j'ai un premier ToggleButton que j'ai codé comme suit et aucun problème :
Private Sub ToggleButton1_Click()
If ToggleButton1.Caption = "Calcul sur ordre" Then
Application.Run "Calcul_Auto"
ToggleButton1.Caption = "Calcul automatique"
ToggleButton1.ControlTipText = "Cliquer pour changer le mode de calcul"
Else
ToggleButton1.Caption = "Calcul automatique"
Application.Run "Calcul_Manuel"
ToggleButton1.Caption = "Calcul sur ordre"
ToggleButton1.ControlTipText = "Cliquer pour changer le mode de calcul"
End If
End Sub
J'en perds mon latin, enfin je veux dire mon VBA.
Merci de bien vouloir m'éclairer sur ce qui pourrait clocher et sur ce je vous souhaite une bonne nuit : la nuit porte conseil.

PS : une piste peut-être, la macro servant à mettre les filtres autos sur ma ligne d'entête ne fonctionne plus non plus quand je l'exécute en mode manuel (ALT+F8), voici son code :
Sub Filtre_Auto()
    Range("A8:BQ8").Select
    Selection.AutoFilter
    Range("B9").Select
End Sub



Edité par criscris11 le 18/07/2012 11:37:15
Hors Ligne
Rapport   Haut 

Re: Problème de détection si filtre auto est présent
#5
Aspirant XLPages

Inscription: 12/07/2008
De RENNES

Messages: 30

Système d'exploitation:
PC
Version Excel utilisée:
2003 FR
Posté le : 16-07-2012 22h01
Re,
Effectivement, sans le point cela ne risquait pas de fonctionner et la prochaine fois je mettrai le code en entier et non en 2 fois : cela m'apprendra .

Merci encore et bonne soirée.
Hors Ligne
Rapport   Haut 

Re: Problème de détection si filtre auto est présent
#6
Aspirant XLPages

Inscription: 12/07/2008
De RENNES

Messages: 30

Système d'exploitation:
PC
Version Excel utilisée:
2003 FR
Posté le : 16-07-2012 21h04
Bonsoir Didier,
Effectivement, cela fonctionne comme cela.
D'où ma question : pourquoi cela ne fonctionne pas avec le nom de la feuille ?
Mais bon, ce n'est pas grave mais dire que j'y avais pensé mais j'étais resté bloquer sur ma première impression qui est en général toujours la bonne (tiens cela me rappelle un certain fil...).

Merci encore pour ton intervention toujours aussi rapide et efficace et bonne soirée à tous.

Amicalement.
Hors Ligne
Rapport   Haut 

Problème de détection si filtre auto est présent
#7
Aspirant XLPages

Inscription: 12/07/2008
De RENNES

Messages: 30

Système d'exploitation:
PC
Version Excel utilisée:
2003 FR
Posté le : 16-07-2012 20h13
Bonsoir à tous,

J'essaye de capter dans le caption d'un ToggleButton à l'ouverture d'un USF la présence ou non d'un filtre auto donc j'ai codé comme ceci :
  Private Sub UserForm_Initialize()
    If AutoFilterMode = True Then
    ToggleButton1.Caption = "Filtre auto activé"
    Else
    ToggleButton1.Caption = "Filtre auto désactivé"
    End If
    End Sub
sauf qu'à l'ouverture de l'USF, le caption du ToggleButton m'indique toujours la valeur Filtre Auto désactivé.
Aurais-je oublié quelque chose ?
Merci pour vos pistes et bonne soirée.

Suite à une remarque pertinente, j'ai rajouté :
With Sheets("Feuil1")
en début de macro avant le test et résultat est toujours le même ???????

Merci encore.
Edité par criscris11 le 16/07/2012 20:56:28
Hors Ligne
Rapport   Haut 

Re: Forcer le calcul à l'activation d'un filtre automatique
#8
Aspirant XLPages

Inscription: 12/07/2008
De RENNES

Messages: 30

Système d'exploitation:
PC
Version Excel utilisée:
2003 FR
Posté le : 18-06-2012 20h57
Bonsoir à tous,
Merci pour ta réponse Jean-Marie. En fait, j'ai pris une autre décision : j'ai remis le classeur en mode de calcul automatique et tant pis pour le recalcul après chaque saisie.
Bonne soirée et merci quand même.
Hors Ligne
Rapport   Haut 

Forcer le calcul à l'activation d'un filtre automatique
#9
Aspirant XLPages

Inscription: 12/07/2008
De RENNES

Messages: 30

Système d'exploitation:
PC
Version Excel utilisée:
2003 FR
Posté le : 15-06-2012 21h14
Bonsoir à tous,

Quelqu'un connaît-il le moyen de recalculer l'onglet sélectionné à l'activation d'un filtre automatique ?
En effet, cela fonctionne avec la remise à zéro de tous les filtres mais je n'ai pas trouver le moyen de déclenché l'évènement Calculate même avec la procédure AutoFilterMode.

Pourquoi allez vous me dire ? Dans mon fichier, le calcul automatique est désactivé à l'ouverture pour des raisons de vitesse d'affichage (plans avec 1300 lignes et 5 niveaux différents) et en ligne 1 de mon onglet de saisie je compte des données dans mes colonnes suivant des critères avec une combinaison de SOMMEPROD et SOUS.TOTAL : par exemple en colonne D le nombre de cellules <>"" et = à BCL ainsi quand je filtre une colonne différente en D1 j'ai toujours le nombre d'occurences avec mes critères de départ par rapport à mon filtre secondaire.
J'espère avoir été assez clair sinon n'hésitez pas.
Bonne soirée à tous.
Hors Ligne
Rapport   Haut 

Re: Activer une liste de validation sur un clic droit
#10
Aspirant XLPages

Inscription: 12/07/2008
De RENNES

Messages: 30

Système d'exploitation:
PC
Version Excel utilisée:
2003 FR
Posté le : 06-06-2012 20h25
Bonsoir Mireille, Jean-Marie, Didier, le forum,
Grâce à vous trois, non seulement vous avez résolu mon problème (oui, je sais je n'oublie pas la balise ) et en plus je m'endormirais moins bête ce soir car effectivement j'avais déjà vu la méthode Case mais je ne pensais pas qu'elle pouvait être utilisée dans une macro évènementielle et encore moins sur plusieurs colonnes (ou lignes ou ce qu'on veut...).
Donc pour résumé, plus besoin de clic droit pour sélectionner une valeur dans ma liste de validation .
 
Comme d'habitude et comme j'ai posté mes 2 codes hier soir, je vous met la macro unique que j'ai réussi (enfin j'espère) à compiler :

Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Column
        Case 1 'L'utilisateur a changé la valeur d'une cellule de la colonne A
            If Target.Count = 1 And Target.Row > 2 Then
            If Target.Value <> "" Then
      Transfert = Target
      If Transfert <> ActiveSheet.Name Then
        Application.EnableEvents = False
        Target.Resize(1, 69).Copy Sheets(Transfert).[A65000].End(xlUp).Offset(1, 0)
        Target.Resize(1, 69).Delete Shift:=xlUp
        Application.EnableEvents = True
      End If
    End If
  End If
        Case 5 'L'utilisateur a changé la valeur d'une cellule de la colonne E
           If Target.Count = 1 And Target.Row > 2 Then
           ActiveCell.Offset(0, 18).Select
           MsgBox "Ne pas oublier de saisir la date de promotion.", vbCritical, "Attention..."
           End If
    End Select
    Calculate
End Sub
 
J'ai testé et cela ma semblé bien fonctionner enfin cela produit l'effet désiré sur mes 2 colonnes. Merci de bien vouloir corriger mes erreurs le cas échéant.

Bonne soirée à tous et encore un très grand merci.
Hors Ligne
Rapport   Haut 

1 2 3 »