Elimination de combinaisons

bonjour le forum

j'ai un fichier B que je compare a un fichier A,je recherche une macro qui élimine les combinaisons du fichier B qui ont 3 et plus numéros commun au combinaisons du fichier A.

çi-joint un bout de fichier

merci

24elimine.xlsx (16.89 Ko)

bonjour

comme il ny a pas foule ;j'amorce

principe :si( somme de mod +1 dans un sommeprod) >=3 ;"" ; n° de ligne: repris pour index

formules en colO et colP masquées

24jad2000.zip (25.63 Ko)

cordialement

Bonsoir, le fil

Bonsoir, tulipe_4, jad73

intrigué par la solution de tulipe, j'ai entrevu une limite (ligne 11, par exemple)

partant de son principe matriciel, en détaillant par colonne, on trouve directement le nombre de concordances par ligne

(sf erreur de ma part)

par formule matricielle à tirer vers le bas :

' =SOMME(SI(A11/G11:K11=1;1;0)+SI(B11/G11:K11=1;1;0)+SI(C11/G11:K11=1;1;0)+SI(D11/G11:K11=1;1;0)+SI(E11/G11:K11=1;1;0))

(validation par Ctrl+Maj+Enter)

Merci à tulipe_4 pour son aiguillage

Bonne suite

Cordialement

re

halte a tout

y'a des moments .........pfffff ; la formule m' etait connue mais abandonnée bicause mal redigée d'ou l'usine a gaz ........

24jad2001.zip (21.65 Ko)

merci Axion de m'avoir vexé

cordialement

Bonsoir à tous,

Petite question : c'est ligne à ligne qu'il faut comparer ou bien tous les A:E pour chaque G:K ?

eric

bonjour tulipe,axion,eriiic,le forum

éffectivement ériiic j'ai oublié de préciser que le fichier en colonne A:E est la base de données est ne doit en aucun cas etre modifiée

c'est les combinaisons de la plage G:K qui doivent etre comparées une a une au fichier bdd et etre éliminée si l'une d'elle a 3 ou + numéros commun aux combinaisons de la bdd.

La plage G:K peut varié en longueur + ou -,la bdd elle ne varie qu'en longueur elle s'agrandit de 3 lignes par semaine.

tulipe_4,j'ai rentré tes formules mais j'obtiens que des #.

je joint un nouveau fichier.

merci

21elimcombi.xlsx (66.29 Ko)

Bonjour,

les combinaisons de la plage G:K doivent être comparées une a une au fichier bdd et être éliminées si l'une d'elle a 3 ou + numéros commun aux combinaisons de la bdd.

Cela ne répond pas vraiment à la question de eriiic.

Est-ce que la combinaison G1:K1 doit être comparée uniquement avec la combinaison A1:E1 ou avec toutes les combinaisons de la bdd ?

A+

re frangy,le forum

La combinaison G1:K1 doit etre comparée a toute la base de donnée A1:E..... et ainsi de suite la G2:K2 a toute la bdd.etc..

merci

Re,

dans ce cas tu aurais dû noter 18-20-29-36-39 (présent en ligne 1) et 13-16-17-21-29 ( (présent en ligne 242) à éliminer...

Proposition en vba :

Sub eliminer()
    Dim derlig1 As Long, lig1 As Long, col1 As Long
    Dim derlig2 As Long, lig2 As Long
    Dim c As Range, cpt As Long
    derlig1 = Cells(Rows.Count, 1).End(xlUp).Row
    derlig2 = Cells(Rows.Count, 7).End(xlUp).Row
    '
    Application.ScreenUpdating = False
    lig2 = 1
    Do While lig2 <= derlig2
        For lig1 = 1 To derlig1
            cpt = 0
            For col1 = 1 To 5
                Set c = Cells(lig2, 7).Resize(1, 5).Find(Cells(lig1, col1).Value, LookIn:=xlValues, lookat:=xlWhole)
                If Not c Is Nothing Then
                    cpt = cpt + 1
                End If
                If cpt = 3 Then Exit For
            Next col1
            If cpt = 3 Then
                Cells(lig2, 7).Resize(1, 6).Delete Shift:=xlUp
                derlig2 = derlig2 - 1
                Exit For
            End If
        Next lig1
        If cpt < 3 Then lig2 = lig2 + 1
    Loop
    Application.ScreenUpdating = True
End Sub

Je supprime une cellule de plus (Cells(lig2, 7).Resize(1, 6).Delete Shift:=xlUp) pour enlever tes annotations en L.

Edit 15:41 : ajout du paramètre lookat resté dans la dernière version non enregistrée. Merci à banzaï pour son oeil de lynx

24classeur3.zip (17.59 Ko)

bonjour

tu avais fait une erreur dans le choix du n°de colonne

je t'ai mis des explications sur l'utilisation de COLONNES( dans la fonction INDEX

24jad2003.zip (52.06 Ko)

cordialement

bonjour tulipe_4,eriiic,le forum

j'ai rectifié ta formule tulipe mais elle trie la mauvaise plage, la plage colonne A a E est la base de données qui ne doit pas etre modifié,j'ai testé la macro d'eriiic en feuil2 il ne devrait rester que 5 combinaisons

merci

23elimcombi.xlsm (105.67 Ko)

Re,

j'ai testé la macro d'eriiic en feuil2 il ne devrait rester que 5 combinaisons

Si je lance sur ton nouveau fichier il en reste bien 5

C'est quoi la question ou le problème ?

eric

re ;bonsoir eriiic

ah .... ma pauvre jad tu n'analyses pas beaucoup

si ce n'est pas les colonnes de A à E ce sera les colonnes de Gà K n'est ce pas ???

donc pour ce faire il faut modifier les parametres de bdd alors il faut que tu ailles dans Insertion >>>>nom>>definir ou alors tu fais Ctrl et la touche F3 apres tu cliques sur bdd et tu remplaces A parG et E par K en laissant les $$;;tu cliques sur ok ; c'est tout

sinon la solution de eriiic et tres bien ;et puis elle est indestructible

cordialement

re tulipe ,eriic et le forum

merci pour vos réponses ,il n'y a pas de probleme eriic c'etait pour voir avec la formule de tulipe.

merci encore

bonjour le forum

eriiic m'a fait un code pour éliminer les combinaisons d'un fichier par rapport à la base de données qui fonctionne trés bien,mais je voudrais l'adapter a un autre fichier qui lui va compter 20 colonnes pour la BdD et 10 col pour le fichier a trier et j'ai oublié de lui demander quel valeurs il fallait changer pource nouveau fichier.

Avant la BdD etait en colA acolE maintenant elle sera en colA a colT

pour le fichier a trier il sera en colV a colAE.

Sub eliminer()
    Dim derlig1 As Long, lig1 As Long, col1 As Long
    Dim derlig2 As Long, lig2 As Long
    Dim c As Range, cpt As Long
    derlig1 = Cells(Rows.Count, 1).End(xlUp).Row
    derlig2 = Cells(Rows.Count, 7).End(xlUp).Row
    '
    Application.ScreenUpdating = False
    lig2 = 1
    Do While lig2 <= derlig2
        For lig1 = 1 To derlig1
            cpt = 0
            For col1 = 1 To 5
                Set c = Cells(lig2, 7).Resize(1, 5).Find(Cells(lig1, col1).Value, LookIn:=xlValues, lookat:=xlWhole)
                If Not c Is Nothing Then
                    cpt = cpt + 1
                End If
                If cpt = 3 Then Exit For
            Next col1
            If cpt = 3 Then
                Cells(lig2, 7).Resize(1, 6).Delete Shift:=xlUp
                derlig2 = derlig2 - 1
                Exit For
            End If
        Next lig1
        If cpt < 3 Then lig2 = lig2 + 1
    Loop
    Application.ScreenUpdating = True
'End Sub
    Range("AD2").Select
End Sub

merci

Bonjour,

essaie cette nouvelle version.

J'ai mis au début 2 constantes à adapter :

Const nbcol1 As Long = 5

Const nbcol2 As Long = 5

Les 2 séries de nombres doivent être séparées par une (et une seule) colonne vide.

eric

27classeur3.zip (17.75 Ko)
Rechercher des sujets similaires à "elimination combinaisons"