Comparaison même valeurs dans une colonne

Pas de problème a-priori.

Bon, au final il semble qu'il ne soit pas possible de transposer cette méthode en VBA ou même d'exporter des mfc sur d'autres fichiers, cela le ne présente donc pas d'intérêt si je ne peux pas l'automatiser à une grosse batterie de fichiers, en tout cas je vous remercie de votre aide et désolé de vous avoir fait perdre votre temps, si je trouve la solution je la posterai ça pourra surement aider quelqu'un.

Cordialement

Je ne vois pas ce que tu veux faire. Tu n'as apparemment pas posé le vrai problème.

Ce dont j'ai besoin c'est une mise en forme faite via vba, j'ai déjà un fichier vba avec d'autre fonctions dessus, toutes attribuées à des boutons, c'est une sorte de panneau de contrôle de plusieurs fonction avec pour chaque bouton un système de parcours pour choisir sur quel fichier affecter la macro, or pour rattacher cette mise en forme à un bouton j'ai besoin d'un code vba qui retranscrirai ce que j'ai mis dans mon schéma jusqu'à la dernière ligne non vide, j'avais jusque ici réussi à programmé quelque chose mais la difficulté été de définir les lignes ou les couples O/R sont les même dans mon programme pour ensuite programmer mes conditions etc.., je m'excuse il est vrai que le titre n'est pas adéquate mais je pensais pouvoir m'en tiré en sachant seulement comment repéré les doublons de colonnes sur différentes lignes (je parle des doublons couple O/R)mais je n'ai en aucun cas la ligne des différents doublons, et c'est ce dont j'ai désespérément besoin, je ne sais pas comment faire appel à la ligne de ces doublons, similitudes entre plusieurs lignes dans mon programme.

Cordialement

Par exemple j'ai déjà utilise une methode comme celle ci pour une mise en forme plus classique :

Range("CR" & i).Select

Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _

"=$AE$" & i & "<>""AOG"""

Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority

With Selection.FormatConditions(1).Interior

.PatternColorIndex = xlAutomatic

.ThemeColor = xlThemeColorLight1

.TintAndShade = 0

End With

mais le problème c'est que O/R peut prendre n'importe quelle valeur qu'au finale la couleur de AG dépend de la valeur d'une autre ligne , j'ai donc été obligé de le retranscire dans une methode comportant tout un tas de if mais je n'arrive pas à faire appel au numero de ligne de ces doublons par exemple dans un Cells(i,33).Value je ne sais pas comment faire en sorte que i prenne la valeur du numéro de ligne des doublons lignes couples O/R

Cordialement

j'exprime très mal mon besoin pardon, alors je veux être capable d'utiliser le numéro des lignes pour lesquelles les valeurs dans 2 colonnes sont les mêmes pour définir des condition de mise en forme sur une autre colonne de ces mêmes lignes (d'où le besoin d'utiliser le numéro des lignes qui présente ces mêmes valeurs) comme exprimé dans le schéma du fichier joint.

Cordialement

Il y a deux aspects : d'abord si problème de classeurs multiples, il fallait fournir au départ les informations et des éléments précis sur la structure de ces classeurs, on peut pas inventer... ; ensuite, le problème que tu as posé est bien un problème de MFC, et bien sûr une MFC peut se mettre en place en utilisant VBA. Mais là, la question est que tu comprennes comment fonctionne la MFC : analyse les formules conditionnelles que j'ai mis qui renvoient le résultat que tu demandais, elles n'ont rien à voir avec celles que tu essaies de concocter.

Une MFC se définit d'abord par la plage sur laquelle elle doit s'appliquer (on considère toute la plage, et pas une seule cellule à la fois !), et si on conditionne son application par une formule, on tape la formule telle qu'elle doit s'appliquer à la cellule supérieure gauche de la plage d'application, en veillant aux références relatives ou absolues pour qu'elle puisse s'appliquer par glissement au reste de la plage (comme on le fait lorsqu'on tape une formule recopiable sans la modifier).

Une formule conditionnelle de MFC c'est comme la condition dans une fonction SI mais on ne tape que la condition, expresssion qui renvoie VRAI ou FAUX, ce qui se passe selon réponse c'est Excel qui s'en occupe en appliquant ou non le format défini.

Dans ton cas, il y a deux éléments conditionnels : 1) la cellule doit être concernée, c'est à dire que dans la colonne AE doit figurer l'une des 2 mentions pour lesquelles on va comparer les valeurs en AG, il faut indiquer les 2, donc 2 expressions réunies par un OU ; 2) 3 conditions pour déterminer les valeurs à comparer : O et R qui doivent être communs et AE avec une des mentions recherchées, c'est SOMMEPROD qui permet ce type de recherche conditionnelle, pour chacune des lignes celles qui ont mêmes valeurs en O et R vont renvoyer 1, celles qui ont les mentions cherchées en AE également, et leur produit renvoyant 1 est multiplié par la valeur en AG pour la renvoyer : les deux expressions SOMMEPROD renvoient chacune une des valeurs que l'on peut comparer (pour les lignes non concernées, l'absence de mention cherchées en AE renverra 0, donc résultat 0...

Ecrire ça en VBA consiste à définir les 3 éléments indispensables : plage d'application, formule, et bien sûr format à appliquer. Pas question de boucle ici, on définit toujours une MFC. [Les autres éléments renvoyés par l'enregistreur, sont comme presque toujours inutiles et encombrants, des propriétés par défaut auxquelles tu ne touches pas, et qui resteront à leur valeur par défaut si on omet de les citer...]

Il reste que le problème n'est pas de définir une MFC par VBA mais de la définir de telles façon qu'elle s'applique à des classeurs différents. C'est donc une macro qui ira le faire mais qui doit pouvoir trouver dans le classeur cible les éléments permettant d'adapter la MFC à ce classeur...

On en reparlera plus tard si le problème subsiste : ceci est mon dernier post jusqu'à au moins après demain (je suis en transit aérien) et le temps de voir mon planning à destination...

Cordialement

Ferrand

d'accord merci beaucoup, en tout cas j'ai déjà crée la macro pour choisir un fichier(il marche déjà sur plusieurs autres macro donc pas de soucis la dessus), de plus le format des autres fichiers concernés par cette macro sont les mêmes c'est dire mêmes colonnes aux mêmes emplacements seul le nombre de ligne des fichiers varie, il n'y aurait donc pas à adapter la Mfc puisque ca resterai la même qui s'étalerai juste sur une range plus grande.

Merci encore

Cordialement

J'ai actuellement traduit votre formule sous forme VBA (u correspond a dernière ligne non vide):

avec i tel For i = 5 to u

Rang("AG" & i).Select

Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(OR(R5C[-2]=""ROUTINE GATEWAY"";R5C[-2]=""CRITICAL"");SUMPRODUCT((R5C[-18]:RuC[-18]=R5C[-18])*(R5C[-15]:RuC[-15]=R5C[-15])*(R5C[-2]:RuC[-2]=""ROUTINE GATEWAY"")*R5:Ru)>SOMMEPROD((R5C[-18]:RuC[-18]=R5C[-18])*(R5C[-15]:RuC[-15]=R5C[-15])*(R5C[-2]:RuC[-15]=""CRITICAL"")*R5:Ru))"

et cela ne marche pas je ne comprend pas pourquoi, de plus je ne sais pas comment ajouter le fait que la case AD doit être vide

Cordialement

dernière retranscription en VBA qui ne bug pas mais ne colore stritement rien:

Sub mfccomplexe()

nb = Application.WorksheetFunction.CountA(ActiveWorkbook.Sheets("Rate Sheet").Columns("A")) - 5

For i = 5 To nb

Range("AG" & i).Select

Selection.FormatConditions.Add Type:=xlExpression, _

Formula1:="= ET(OU($AE5=""ROUTINE GATEWAY"";$AE5=""CRITICAL"");SOMMEPROD(($O$5:$O$994=$O5)*($R$5:$R$994=$R5)*($AE$5:$AE$994=""ROUTINE GATEWAY"")*$AG$5:$AG$994)>SOMMEPROD(($O$5:$O$994=$O5)*($R$5:$R$994=$R5)*($AE$5:$AE$994=""CRITICAL"")*$AG$5:$AG$994))"

Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority

With Selection.FormatConditions(1).Interior

.PatternColorIndex = xlAutomatic

.color = 3

.TintAndShade = 0

End With

Next i

End Sub

J'avais posé nb pour l'indiqué comme dernière ligne à la place de 994, je ne comprend pas pourquoi cela ne marche toujours pas, j'ai pensé remplacé les 5 par i et 994 par nb, 5 est la 1er ligne au lieu du 3 dans l'exemple , mais je pense pas que i ai besoin d'être modifié donc je voulais passer à Formula1 tel que :

Formula1:="= ET(OU($AE5=""ROUTINE GATEWAY"";$AE5=""CRITICAL"");SOMMEPROD(($O$5:$O$" & nb & "=$O$5)*($R$5:$R$" & nb & "=$R5)*($AE$5:$AE$" & nb & "=""ROUTINE GATEWAY"")*$AG$5:$AG$" & nb & ")>SOMMEPROD(($O$5:$O$" & nb & "=$O5)*($R$5:$R$" & nb & "=$R5)*($AE$5:$AE$" & nb & "=""CRITICAL"")*$AG$5:$AG$" & nb & "))"

Cordialement

C'est bon j'ai reussi à le retranscrire en vba adapté à mon nombre de ligne cependant la coloration (ici en noir) ne se fait que pour GATEWAY lorsque les conditions sont réunis, j'aurai aimé savoir pourquoi :

Sub mfccomplexe()

nb = Application.WorksheetFunction.CountA(ActiveWorkbook.Sheets("Rate Sheet").Columns("A")) - 5

For i = 5 To nb

Range("AG" & i).Select

Selection.FormatConditions.Add Type:=xlExpression, _

Formula1:="=ET(OU($AE$" & i & "=""ROUTINE GATEWAY"";$AE$" & i & "=""CRITICAL"";$AD$" & i & "="""");SOMMEPROD(($O$" & i & ":$O$" & nb & "=$O" & i & ")*($R$" & i & ":$R$" & nb & "=$R" & i & ")*($AE$" & i & ":$AE$" & nb & "=""ROUTINE GATEWAY"")*$AG$" & i & ":$AG$" & nb & ")>SOMMEPROD(($O$" & i & ":$O$" & nb & "=$O" & i & ")*($R$" & i & ":$R$" & nb & "=$R" & i & ")*($AE$" & i & ":$AE$" & nb & "=""CRITICAL"")*$AG$" & i & ":$AG$" & nb & "))"

Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority

With Selection.FormatConditions(1).Interior

.PatternColorIndex = xlAutomatic

.color = 3

.TintAndShade = 0

End With

Next i

End Sub

Cordialement

Rechercher des sujets similaires à "comparaison meme valeurs colonne"