Microsoft 365 Formule identifiant une référence associé à deux résultats

AntoineLTO

XLDnaute Nouveau
Bonjour,

Je souhaite après un export, identifier les engagements qui seraient associés à deux taux de TVA différents (en l'occurrence 5,5 et 20).
Les engagements uniquement à 5,5 ou uniquement à 20 ne me posent pas de problème.

Je mets en pièce jointe un exemple. En jaune sont les engagements que je souhaite faire ressortir avec ladite formule.

Si vous pouviez me donner la ou les formules à associer ou bien m'aiguiller je vous en serais très reconnaissant.

Merci pour le temps que vous m'accorderez.

Bonne journée.
 

Pièces jointes

  • Vérification facturation double tx.xlsx
    11.3 KB · Affichages: 6

job75

XLDnaute Barbatruc
Bonjour AntoineLTO,

MFC sur la plage A1:F1000 :
Code:
=ESTNUM(EQUIV($A1&" "&5,5;$A$1:$A$1000&" "&$B$1:$B$1000;0))*ESTNUM(EQUIV($A1&" "&20;$A$1:$A$1000&" "&$B$1:$B$1000;0))
A+
 

Pièces jointes

  • Vérification facturation double tx.xlsx
    12.3 KB · Affichages: 1

AntoineLTO

XLDnaute Nouveau
Bonjour AntoineLTO,

MFC sur la plage A1:F1000 :
Code:
=ESTNUM(EQUIV($A1&" "&5,5;$A$1:$A$1000&" "&$B$1:$B$1000;0))*ESTNUM(EQUIV($A1&" "&20;$A$1:$A$1000&" "&$B$1:$B$1000;0))
A+
Bonjour job75,

Tout d'abord merci pour la réponse rapide.

J'ai bien l'impression que ça fonctionne sur l'exemple donné malheureusement je n'arrive pas à le reproduire sur mon fichier original de 17287 ligne ça ne fonctionne plus. (à moins que ce ne soit un temps de traitement, excel rame)

Sommes nous d'accord que pour une utilisation jusqu'à la 17827eme ligne la formule de la MFC deviendrait :

Code:
=ESTNUM(EQUIV($A1&" "&5,5;$A$1:$A$17827&" "&$B$1:$B$17827;0))*ESTNUM(EQUIV($A1&" "&20;$A$1:$A$17827&" "&$B$1:$B$17827;0))

Et est-ce qu'il y a des manipulations particulières à réaliser dans la MFC hormis ; nouvelle règle, utiliser une formule pour déterminer ... , inscrire la règle, choisir la plage, et choisir le format ?

Sinon, qu'aurais-je fait de mal ?

Cordialement,
 
Dernière édition:

job75

XLDnaute Barbatruc
Oui la formule modifiée ainsi va bien pour 17827 lignes.

Mais il faut aussi modifier la zone d'application de la MFC => $A$1:$F$17827

Cela dit la zone est grande et le calcul de la MFC va prendre du temps, vous allez vous en rendre compte.
 

job75

XLDnaute Barbatruc
Si le tableau est grand il faut utiliser VBA.

Voyez le fichier joint et ce code dans Module1 :
VB:
Public d As Object 'mémorise la variable

Function MFC(c As Range) As Boolean
MFC = d.exists(c & Chr(1) & 5.5) And d.exists(c & Chr(1) & 20)
End Function

Sub Creer_MFC()
Dim tablo, i&
With Feuil1
    Application.ScreenUpdating = False
    .[A:F].FormatConditions.Delete 'RAZ
    Set d = CreateObject("Scripting.Dictionary")
    tablo = .UsedRange.Resize(, 6) 'matrice, plus rapide
    For i = 1 To UBound(tablo)
        d(tablo(i, 1) & Chr(1) & tablo(i, 2)) = ""
    Next
    .[A:F].FormatConditions.Add xlExpression, Formula1:="=MFC($A1)"
    .[A:F].FormatConditions(1).Interior.Color = RGB(189, 215, 238)
End With
End Sub
La macro Creer_MFC est lancée pat les macros Workbook_Open et Worksheet_Change, donc à l'ouverture du fichier et quand on modifie la feuille.

Pour tester la durée d'exécution j'ai créé le 2ème fichier avec 29000 lignes.
 

Pièces jointes

  • Vérification VBA(1).xlsm
    21.9 KB · Affichages: 2
  • Test 29000 lignes.xlsm
    870.4 KB · Affichages: 2
Dernière édition:

AntoineLTO

XLDnaute Nouveau
Si le tableau est grand il faut utiliser VBA.

Voyez le fichier joint et ce code dans Module1 :
VB:
Public d As Object 'mémorise la variable

Function MFC(c As Range) As Boolean
MFC = d.exists(c & Chr(1) & 5.5) And d.exists(c & Chr(1) & 20)
End Function

Sub Creer_MFC()
Dim tablo, i&
With Feuil1
    Application.ScreenUpdating = False
    .[A:F].FormatConditions.Delete 'RAZ
    Set d = CreateObject("Scripting.Dictionary")
    tablo = .UsedRange.Resize(, 6) 'matrice, plus rapide
    For i = 1 To UBound(tablo)
        d(tablo(i, 1) & Chr(1) & tablo(i, 2)) = ""
    Next
    .[A:F].FormatConditions.Add xlExpression, Formula1:="=MFC($A1)"
    .[A:F].FormatConditions(1).Interior.Color = RGB(189, 215, 238)
End With
End Sub
La macro Creer_MFC est lancée pat les macros Workbook_Open et Worksheet_Change, donc à l'ouverture du fichier et quand on modifie la feuille.

Pour tester la durée d'exécution j'ai créé le 2ème fichier avec 29000 lignes
Bonjour Job75,

Un grand merci pour votre aide et ce travail fourni. J'espère qu'il ne vous aura pas pris trop de temps.
Votre fichier fonctionne très bien, je vais donc le reprendre. Je ne sais pas pourquoi cela ne fonctionne pas lorsque j'utilise le code dans un autre fichier mais c'est un détail.

Une très bonne fin de journée à vous !
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 173
dernier inscrit
Cerba95