macro argument: couleur de cell
#1
Débutant XLPages

Inscription: 05/04/2008

Messages: 7

Système d'exploitation:
PC
Version Excel utilisée:
2000
Posté le : 06-04-2008 17h23
bonjour je suis novice ormis qques enregistrements que j'ai bricoles pour adapter a mes besoins c' est tout
j'ai prefere joindre un fichier qui j'espere sera plus clair
merci d'avance et; n'hesitez pas a me faire des commentaires il faut que j'apprenne
Pièce jointe:
xls essai macro conso.xls   [ Taille: 28.00 Ko - Téléchargements: 634 ]
Hors Ligne
Rapport   Haut 

Re: macro argument: couleur de cell
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 06-04-2008 19h21
Bonsoir gilles et bienvenue,
Bonsoir le Forum,

Je n'ai pas entièrement compris ce que tu cherches à obtenir et en particulier la phrase : "si1cellrepond à formatcondition=vrai alors consolidate source( array(c12:b12) apres effacer b12"

Sauf erreur, par macro VBA, tu souhaites détecter la couleur d'une cellule issue d'une Mise en Forme Conditionnelle (MFC). Je t'annonce dès le départ que ce n'est pas une bonne idée : il n'y a aucune façon "simple" d'obtenir cette détection de couleur MFC. Le seul moyen consiste à évaluer la formule présente dans la MFC pour déterminer si la condition est remplie ou non. Si la condition est remplie, il convient ensuite d'ausculter les paramètres de cette MFC pour en extraire le format applicable et donc, en obtenir la couleur de cellule associée.
L'illustre Laurent Longre s'était penché sur ce problème et en avait déduit une magnifique procédure capable de réaliser ce test : tu la trouveras notamment sous ce lien Récupérer la couleur appliquée par une Mise en Forme Conditionnelle chez nos amis d'Excelabo.
L'ennui, c'est qu'il est impossible d'évaluer la formule de la MFC sans passer par une cellule intermédiaire, ce qui réduit considérablement l'intérêt pratique de cette macro à mon humble avis...

Je pense donc qu'il est préférable de revoir la façon d'aborder ton projet et de privilégier une analyse directe de la formule ou valeur de la cellule plutôt qu'une analyse de sa couleur de fond.

Dans l'attente d'un peu plus d'explications de ta part pour la suite...

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: macro argument: couleur de cell
#3
Débutant XLPages

Inscription: 05/04/2008

Messages: 7

Système d'exploitation:
PC
Version Excel utilisée:
2000
Posté le : 07-04-2008 17h22
bonsoiir DIDIER ainsi qu' a tout les lecteurs du forum
je suis content d'avoir eu une reponse
mon probleme a l'air plus ardu qu'il n'y parait mais je garde espoir (voir fichier-joint )

merci et; bonne nuit il parait qu'elle porte conseil j'en ai besoin
Pièce jointe:
xls essai macro conso.xls   [ Taille: 30.50 Ko - Téléchargements: 648 ]
Hors Ligne
Rapport   Haut 

Re: macro argument: couleur de cell
#4
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 08-04-2008 00h35
Bonsoir gilles, le Forum,

Dans ton classeur, tu précises :
Citation :

gilles a écrit:
Après avoir consulte Excelabo j'ai remarqué dans la rubrique "condition formules " la macro de Jacques Boisgontier ayant pour titre " somme en fonction de la couleur " ; son principe : la comparaison ; peut-on" caresser l'espoir " de calquer son principe a mon sujet

Faire la somme (ou autre calcul) de cellules selon leur couleur est tout à fait réalisable, voire simple à réaliser... mais pas sur des couleurs issues de Mise en Forme Conditionnelles !
Visiblement, j'ai dû mal m'expliquer dans le précédent post...

Reprenons ton dernier fichier et prenons un exemple :
[list]
[*]En A3, tu choisis "b"
[*]Les cellules E3:F3 prennent la couleur de fond "vert" (Mise en Forme Conditionnelle).
[*]Maintenant, lances simplement la ligne de code suivante :
MsgBox Range("F3").Interior.ColorIndex
Tu vas obtenir la valeur -4142.
[*]Normalement, cette ligne de code est sensée te donner le code couleur de la cellule F3 et pourtant, tu obtiens -4142 qui est le code correspondant à une absence de couleur ! Etonnant, non ? Eh bien non, c'est le principe de toute MFC : la couleur que tu aperçois, tu ne peux en obtenir le code autrement qu'avec la macro de Laurent Longre citée plus haut (macro non applicable dans le contexte d'une fonction personnalisée).
[/list]

De plus, je n'ai toujours pas l'explication de "si1cellrepond à formatcondition=vrai alors consolidate source( array(c12:b12) apres effacer b12" et je n'ai encore aucune idée de ce que tu cherches réellement à faire... Difficile de te répondre ou de te proposer d'autres solutions dans ce cas...

Par ailleurs, s'il te plait, afin de permettre aux visiteurs de prendre connaissance du sujet sans être obligé de télécharger la pièce jointe, à l'avenir merci de bien vouloir donner les explications détaillées de ta demande dans le corps même de tes posts. La pièce jointe est toujours la bienvenue, mais elle doit rester un complément au message et en aucun cas le remplacer.

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: macro argument: couleur de cell
#5
Débutant XLPages

Inscription: 05/04/2008

Messages: 7

Système d'exploitation:
PC
Version Excel utilisée:
2000
Posté le : 11-04-2008 11h53
Bonjour Didier ainsi qu’ aux lecteurs du forum
A la lumière de vos explications ; j’ai décide de changer de tactique, pour pouvoir quand même sélectionner la cell concernée par la consolidation
1) j’affecte un code (en 3eme col) pour chaque cell à consolider
2) en(A1) par RECH V colo « 3 » le code s’affiche en (A1)
je pense que le fait d’utiliser le code (en A1) comme argument pour « designer » une cellule qui ; elle, et seulement elle servira de destination à loperation : (consolidate array(b12,c12)
3) en copiant/collant ces lignes de code vb ,et en modifiant le parametre (A1) et cell à activer ceci dans la même macro de manière a n’utiliser qu’un seul bouton pour lancer l’operation
bien entendu je conçois qu’ en amont de (if) il va falloir fournir des indications( lesquelles ? )
lors du précèdent message vous me disiez ne pas saisir la teneur de :si cell…=FormatCondition…..alors ….. C’est que le tableau est masque,et,que seules apparaissent à l’écran :1cell=quoi 1cell=combien 1cell dite d’ajustement (1ere source de la conso :dans l’ex(b12) et le bouton de commande
j’ai préfère la consolidation car j’ai remarque que la cette dernière permettait après « l’opération »
d’effacer la source (B12 dans l’ex) sans que le résultat (c12) en soit affecte de plus elle me
permet d’échapper au piège des bref circulaires car ce qui m’intéresse c’est de « cumuler »
et d’effacer (B12) pour éviter toute double saisie
j’ai +/- 150 valeurs à consulter voir modifier vous comprenez pourquoi je cherche un moyen
simple d’aller « fouiller » dans un tableau exhaustif de surcroît tout en limitant les sources
d’erreurs
mon projet est-il viable ? une idée de Candide ?
p.s je m’excuse pour les fichiers joint car je ne suis qu’un très récent utilisateur de forum
Hors Ligne
Rapport   Haut 

Re: macro argument: couleur de cell
#6
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 11-04-2008 13h03
Bonjour gilles,

Je suis désolé, mais je n'arrive pas à comprendre ce que tu cherches à faire...
En fait, c'est surtout l'expression "consolidate source( array(c12:b12) apres effacer b12" sur laquelle je dois faire un blocage :-L , je ne vois pas ce que ça signifie concrêtement.

Si je reprends tes 2 fichiers joints, je ne sais pas non plus à quoi correspond la valeur B12 par exemple (et le commentaire attaché à cette cellule ne m'éclaire pas d'avantage).

Voici ce qu'il me semble avoir compris (en occultant le problème de la couleur de cellule) :
[list=1]
[*]Il y a des données de départ sur la feuille : sauf erreur, en colonnes E:F sur plus de 150 lignes.
[*]Une action utilisateur est effectuée : choix d'un élément en A3.
[*]Un traitement automatique doit être réalisé par macro VBA : quoi ? où ? sur quelle base ?
[/list]
Je sais que l'exercice n'est pas facile, mais essaies de reprendre tes explications clairement et avec un peu de recul car, même si c'est appréciable de voir que tu es à fond sur ton sujet, moi je reste complètement à la dérive...

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: macro argument: couleur de cell
#7
Débutant XLPages

Inscription: 05/04/2008

Messages: 7

Système d'exploitation:
PC
Version Excel utilisée:
2000
Posté le : 13-04-2008 15h25
Bonjour Didier et ; merci de votre patience, car j’en connais plus d’un qui m’aurait…….
Je reprends les « zones d’ombre »
Dans le message précédent j’avais décrit les avantages de la consolidation ; cette dernière est composée de 2 sources
C12 qui correspond à la valeur trouvée par RECH V
B12 : une cell vide à compléter
L’opérateur après avoir rentré en A1 un texte (quoi ?) Obtient en C12 la valeur correspondante (combien).Si cette valeur a besoin d’être modifiée il utilise : B12
Comme il est impossible de modifier directement C12 (au risque d’annuler f(x) ) il me faut aller
sélectionner et activer dans le tableau la cell correspondante
j’avais pensé le faire grâce à MFC mais……. Peut-etre un code (cf message précédent)
donc le traitement automatique vba pourrait être
« chercher la cell qui correspond à la valeur C12 ,l’activer , consolider , effacer B12
ce que je recherche c’ est <qui> consolider
Je suis parvenu à automatiser la consolidation suivi de l’effacement de B12 par l’enregistrement
Mais je ne sais pas rédiger la condition avec tout ce qui la précède et la suit pour sélectionner
Et surtout activer la cell contenant la val affichée en C12 qui se trouve dans la col F
Peut-être utilise-je de façon détournée la consolidation ? mais ça marche
Que pensez de la solution du code « associé » à cette fameuse cell comme critère de sélection ? Car la val de cette cell ne peut en aucun cas servir de critère ; Imaginons 2 val identiques ……..
J’y pense en dernière minute les 2 references sources de la consolidation sont toujours les memes
A savoir :B12et C12
A lire et décortiquer les astuces, les forum je pressent que c’ est réalisable . Décidément, je manque de bases
Cordialement
Hors Ligne
Rapport   Haut 

Re: macro argument: couleur de cell
#8
Débutant XLPages

Inscription: 05/04/2008

Messages: 7

Système d'exploitation:
PC
Version Excel utilisée:
2000
Posté le : 13-04-2008 15h34
rectificatif au message de 15h30 : l'operateur entre en A3 te non pas enA1
pardon on est dimanche
Hors Ligne
Rapport   Haut 

Re: macro argument: couleur de cell
#9
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 13-04-2008 18h53
Bonjour gilles, le Forum,

Ok, je pense avoir compris cette fois (enfin j'espère )... petit problème de vocabulaire visiblement, nous n'avons pas la même interprétation du mot consolider.

Tu trouveras ci-joint une version de ton exemple entièrement traité par VBA sur la base de ce que j'ai compris. Teste-le et dis-moi si c'est bien ça que tu souhaites et n'hésite pas si je reste à côté de la plaque ou si tu as besoin d'explications complémentaires...

J'ai conservé une MFC "classique" pour mettre en évidence les choix de l'utilisateur (je me suis permis de modifier toutefois les formules en critère MFC).
J'ai utiliser la procédure évènementielle suivante pour tout le traitement (dans le module de code de la Feuil1) ce qui a l'avantage d'éviter le recours à un bouton :
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
    
'Si modif utilisateur en A3 ou C12
    If Not Application.Intersect(Target, Union(Range("A3"), Range("C12"))) Is Nothing Then
        '
Recherche de l'élément en colonne E
        Set C = Columns("E").Find(Range("A3").Value)
        If Not C Is Nothing Then
            '
Si A3 a été modifiée par l'utilisateur
            If Target.Address = "$A$3" Then
                Range("C12").Value = C.Offset(0, 1).Value
            Else
            '
Si C12 a été modifiée par l'utilisateur
                C.Offset(0, 1).Value = Range("C12").Value
            End If
        End If
    End If
End Sub


Cordialement,
Pièce jointe:
zip PourGilles.zip   [ Taille: 9.15 Ko - Téléchargements: 638 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: macro argument: couleur de cell
#10
Débutant XLPages

Inscription: 05/04/2008

Messages: 7

Système d'exploitation:
PC
Version Excel utilisée:
2000
Posté le : 15-04-2008 13h33
Bravo ! nous nous sommes enfin compris et, votre solution est impeccable car elle fait abstraction du nombre de valeurs à traiter (col E) ; de plus le problème de la « consolidation » est réglé
Dans le soucis de Bonjour Didier ainsi qu’a tout les lecteurs du forum
rendre l’ouvrage ultra simple d’utilisation je vous demande si il est possible de décomposer la valeur ( C12) de manière à ce que l’utilisateur par l’ usage de la cell (B 12 ) n’ai qu’a rentrer la valeur en + ou - qui vient modifier C12 Ceci pour éviter l’usage d’ une calculette et de saisir la val (C12) ainsi modifiee quitte à passer par un bouton afin que cette opération soit « tactilement » validée .Dans même soucis je pense que la valeur saisie en (B12)doit être à
Usage unique pour éviter la double saisie
Pour apprendre : à « l’étude » de votre code : optionexplicit correspond à ?
Encore merci
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes