Mofifier l'action finale d'une macro

Gedch

XLDnaute Occasionnel
Bonjour à tout le Forum

Je souhaiterais modifier l'action finale de cette macro
Actuellement celle-ci me permet de faire une recherche sur mon fichier et de me placer dans le fichier sur la signe sélectionnée.

Je souhaiterais faire une nouvelle macro à partir de celle-ci, pour me permettre de lister toutes les lignes comportant le signe "$" (Colonne H du fichier) dans la ListView
Puis en double cliquant sur une des lignes de la ListView, Remplacer le signe "$" par le signe "*" dans la feuille Relevé
(Sans sortir de la listveiw pour éventuellement recommencer la manœuvre pour la ligne suivant.)

Je suis bien arrivé à modifier une partie de la macro, mais je n'arrive pas à terminer
C'est que l'action est tout autre !

A+
 

Pièces jointes

  • ListView Validation.xlsm
    30.2 KB · Affichages: 32

jecherche

XLDnaute Occasionnel
Re : Mofifier l'action finale d'une macro

Bonjour,

Pour avancer d'un pas ... le userform est nommé "Recherche_Validation" et dans ton code du fait appel, à quelques reprises, à "Recherche_Code_Validation".

Ça va aller mieux après la correction :)

Jecherche
 

Gedch

XLDnaute Occasionnel
Re : Mofifier l'action finale d'une macro

Bonjour Jecherche

Oui merci effectivement j'avais simplifié le nom du ListView, et j’avais oublié de modifier le code en conséquence

Mais non cela ne va pas allez mieux, car cela ne modifie pas ma macro
Celle-ci fonctionne par ailleurs très bien et je m'en sers régulièrement, mais c'est pour au autre besoin que je souhaite t modifier l'action finale comme je l'ai détaillé dans mon post et à l'intérieur de mon fichier exemple.

Comme cela dépasse mes connaissances, j'ai lancé cette discussion .......

A+
 

Pièces jointes

  • ListView Validation.xlsm
    31.1 KB · Affichages: 30

Gedch

XLDnaute Occasionnel
Re : Mofifier l'action finale d'une macro

Bonjour Mapomme

Plus qu'une piste !
Cela correspond parfaitement à que je veux
Un grand merci

Juste 2 petites questions :
1) Je suis très loin de comprendre tout le code, mais je vois RemplirListBox TextBox1.Text
Ce n'est pourtant pas une ListBox ??
2) Je vois qu'il n'y a plus la gestion des couleurs, est-ce qu'il est possible de gérer cette gestion des couleurs suivant les caractères et les nombres comme celle qui existait dans la macro que j'avais mis en exemple ??

A+
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Mofifier l'action finale d'une macro

Bonsoir Gedch,
(...) mais je vois RemplirListBox TextBox1.Text Ce n'est pourtant pas une ListBox ?(...)

RemplirListBox
est le nom d'une procédure. Son nom importe peu. On aurait pu l'appeler Toto.
Dans cette v2, son nouveau petit nom est: PeuplerLaListe

(...) Je vois qu'il n'y a plus la gestion des couleurs, est-ce qu'il est possible de gérer cette gestion des couleurs suivant les caractères et les nombres comme celle qui existait dans la macro que j'avais mis en exemple ?

C'est fait dans la v2. J'ai repris, à quelques modifications près, la procédure que vous aviez écrite. La procédure s'appelle: ColorierLaListe
 

Pièces jointes

  • Gedch- ListView Validation- v2.xlsm
    30.5 KB · Affichages: 32

Gedch

XLDnaute Occasionnel
Re : Mofifier l'action finale d'une macro

Bonjour Mapomme

Merci à nouveau
Avec la couleur, c'est plus facile de discerner directement ce que l'on cherche
Le code me parait facile à comprendre et à faire évoluer
J'ai donc essayé de terminer la macro pour la mise en couleur des sommes comme dans la macro de base
J'ai mis ce code :

Code:
    Me.ListView1.ListItems(i).ListSubItems(5).Bold = True
    If Me.ListView1.ListItems(i).ListSubItems(5) = 2000 Then
      Me.ListView1.ListItems(i).ListSubItems(5).ForeColor = &H2FFF00  'Vert
    ElseIf Me.ListView1.ListItems(i).ListSubItems(5) > 1000 Then
      Me.ListView1.ListItems(i).ListSubItems(5).ForeColor = &HFFFF&   'Jaune
    ElseIf Me.ListView1.ListItems(i).ListSubItems(5) > 500 Then
      Me.ListView1.ListItems(i).ListSubItems(5).ForeColor = &HFF7E00  'Bleu
    End If

Mais je m’aperçois que le code ne fonctionne que en mode texte, pas pour du numérique ??

A+
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Mofifier l'action finale d'une macro

Bonsoir Gedch,

Bonjour Mapomme

Merci à nouveau
Avec la couleur, c'est plus facile de discerner directement ce que l'on cherche
Le code me parait facile à comprendre et à faire évoluer
J'ai donc essayé de terminer la macro pour la mise en couleur des sommes comme dans la macro de base
J'ai mis ce code :

Code:
    Me.ListView1.ListItems(i).ListSubItems(5).Bold = True
    If Me.ListView1.ListItems(i).ListSubItems(5) = 2000 Then
      Me.ListView1.ListItems(i).ListSubItems(5).ForeColor = &H2FFF00  'Vert
    ElseIf Me.ListView1.ListItems(i).ListSubItems(5) > 1000 Then
      Me.ListView1.ListItems(i).ListSubItems(5).ForeColor = &HFFFF&   'Jaune
    ElseIf Me.ListView1.ListItems(i).ListSubItems(5) > 500 Then
      Me.ListView1.ListItems(i).ListSubItems(5).ForeColor = &HFF7E00  'Bleu
    End If

Mais je m’aperçois que le code ne fonctionne que en mode texte, pas pour du numérique ??

A+

En effet l'élément renvoyé par Me.ListView1.ListItems(i).ListSubItems(5) est au format texte. Pour le comparer à un nombre, il faut d'abord le convertir en nombre, après s'être assuré que cet élément représente bien un nombre.
.

  • Pour s'assurer que l'élément représente un nombre, on utilise la fonction isnumeric.
  • Pour obtenir le nombre représenté par l'élément, on utilise la fonction de conversion CSng qui convertit un texte en un nombre de type single.
 

Pièces jointes

  • Gedch- ListView Validation- v3.xlsm
    35.7 KB · Affichages: 30

Gedch

XLDnaute Occasionnel
Re : Mofifier l'action finale d'une macro

Bonjour Mapomme

Merci à nouveau
J'avais bien essayé avec "Isnumeric", mais je ne connaissais pas "CSng"
Cela parait même extrêmement simple, (maintenant que je vois le code !)
En tous cas j'ai pu m'en servir sans difficulté pour faire de même pour la colonne "Rentrée"

Je m'étais toujours arrangé pour faire évoluer la méthode utilisée dans ma ListView d'origine
Mais je n'ai jamais pu comprendre son code et jamais pu la reproduire.

J'avais essayé de la dupliquée pour pouvoir afficher les dates aux années paires dans une autre couleur que les dates aux années impaires. sans succès!

Je viens d'essayé de faire cela avec ta méthode, j'ai essayé de remplacer "isnumeric" par "isdate" et de rajouter "Cdate"
Mais ce n'est pas cela !!

A+
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Mofifier l'action finale d'une macro

Bonsoir Gedch,

(...) J'avais essayé de la dupliquée pour pouvoir afficher les dates aux années paires dans une autre couleur que les dates aux années impaires. sans succès!

Je viens d'essayé de faire cela avec ta méthode, j'ai essayé de remplacer "isnumeric" par "isdate" et de rajouter "Cdate"
Mais ce n'est pas cela !! (...)

Et pourtant, vous avez identifié les ingrédients (isdate et Cdate) :rolleyes:

Le code que j'ai pondu :
VB:
'--------------------------- Ajout Couleur Date
If IsDate(ListView1.ListItems(i)) Then
  If Year(CDate(ListView1.ListItems(i))) Mod 2 = 0 Then
    .ForeColor = 6908415    'année paire Bleu
  Else
    .ForeColor = 16765523   'année impaire Beige
  End If
End If

nota:
le premier champ de la liste est désigné par ListView1.ListItems(i) et non par l'intermédiaire de la propriété .ListSubItems()
 

Pièces jointes

  • Gedch- ListView Validation- v4.xlsm
    36.8 KB · Affichages: 27

Gedch

XLDnaute Occasionnel
Re : Mofifier l'action finale d'une macro

Re,

Effectivement en regardant plus attentivement, je m’étais aperçu que la colonne date, n’était pas la colonne 1 !

Du coup pour faire le test de mon code, j’ai reporté les dates dans la colonne 2 inutilisée, et cela fonctionnait
Restait donc de savoir comment faire pour faire la même chose sur cette colonne « 0 ».

C’est vrai que ce n’est pas facile à s’y retrouver
Parfois c’est le numéro de la colonne de Excel
Parfois c’est le numéro de la colonne de la ListView !
En plus il y a la colonne cachée….

Tu viens de me donner la solution, encore merci.

Une petite question si je n’abuse pas ?
Pour faire mes tests je m’étais borné à faire des tests sur la date dans la feuille Excel par rapport à une date rentrée dans le code soit par exemple
Code:
.ListSubItems(1) > 37256
.

Y a-t-il un moyen de faire cette comparaison avec une date au format texte
Soit quelque chose comme
Code:
.ListSubItems(1) > "10/05/2015"
?

A+
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Mofifier l'action finale d'une macro

Re,

(...) Pour faire mes tests je m’étais borné à faire des tests sur la date dans la feuille Excel par rapport à une date rentrée dans le code soit par exemple
Code:
.ListSubItems(1) > 37256
Y a-t-il un moyen de faire cette comparaison avec une date au format texte. Soit quelque chose comme
Code:
.ListSubItems(1) >"10/05/2015"

Essayez (pas testé):
VB:
CDate(.ListSubItems(1)) > CDate("10/05/2015")

ou si c'est la première colonne de la liste:
VB:
CDate(ListView1.ListItems(i)) > CDate("10/05/2015")
 

Gedch

XLDnaute Occasionnel
Re : Mofifier l'action finale d'une macro

Bonsoir Mapomme

Merci c'est Ok
Je te remercie à nouveau
Je suis triplement satisfait
J'ai la ListView que je souhaitais
Cela m'a également permis de gérer les dates dans mon autre ListView
Ce que je n'étais pas parvenu à faire jusqu'ici
Et sans être capable d'écrire une telle ListView par moi-même
J'ai pas avancé en VBA

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 487
Messages
2 088 825
Membres
103 971
dernier inscrit
abdazee