RESOLU Faire ressortire les duos d'une plage...

Guido

XLDnaute Accro
Bonsoir Le Forum

Je cherche a selectionner les duos qui se trouve dans une plage jaune uniquement

en partants de la premiere case en haut a gauche et ensuite a droite ainsi de suite ,mais avec les 12 cellules


Je cherche a selectionner les duos qui se trouve dans une plage verte uniquement

en partants de la premiere case en bas a gauche et ensuite a droite ainsi de suite ,mais avec les 12 cellules

Voir le fichier

Avec formules ou macros

Merci

Guido
 

Pièces jointes

  • Faire ressortir les duos d'une plage....xls
    18 KB · Affichages: 53

job75

XLDnaute Barbatruc
Re : Faire ressortire les duos d'une plage...

Bonjour Guido,

Sur votre exemple il y a 2 tableaux, mais il peut y en avoir plus non ?

Où met-on les résultats de chaque tableau si l'on ne veut pas empiéter sur le tableau suivant ?

A+
 

Guido

XLDnaute Accro
Re : Faire ressortire les duos d'une plage...

Bonjour Guido,

Sur votre exemple il y a 2 tableaux, mais il peut y en avoir plus non ?

Où met-on les résultats de chaque tableau si l'on ne veut pas empiéter sur le tableau suivant ?

A+

Re

Bonjour job75

Sur votre exemple il y a 2 tableaux, mais il peut y en avoir plus non ?

OUI mais max neufs.

Où met-on les résultats de chaque tableau si l'on ne veut pas empiéter sur le tableau suivant ?

Les tableaux seront mis en place les uns sous les autres avec un espace de 11 lignes entre chaque tableau..

Merci pour ton aide job75 et le forum

a plus

Guido
 

Pièces jointes

  • 360956d1459981782-faire-ressortire-les-duos-dune-plage-faire-ressortir-les-duos-dune-plage1.xls
    16 KB · Affichages: 28

Guido

XLDnaute Accro
Re : Faire ressortire les duos d'une plage...

Re

Bonsoir

Je constate que ma demande ,et a nouveau dur a solutionner.

Un seul tableau pourrais me satisfaire,et je completerais pour la finalisation

Merci d'avance

Guido
 

job75

XLDnaute Barbatruc
Re : Faire ressortire les duos d'une plage...

Bonsoir Guido,

Dans le fichier joint j'ai mis les 2 tableaux du fichier du post #1 l'un au dessous de l'autre.

Le nombre de lignes entre les tableaux n'a pas d'importance.

La macro du bouton :

Code:
Sub Doublons()
Dim nbtab&, prem As Range, deb As Range, colrest#, i&, col#, P As Range, j, k
nbtab = 9 'nombre maximum de tableaux
Set prem = [B6] '1ère cellule avec la valeur 1, à adapter
Set deb = prem
colrest = 6 'n° de colonne de restitution par rapport à deb
Application.ScreenUpdating = False
For i = 1 To nbtab
  deb(1, colrest).Resize(2, 6).Clear 'RAZ de la zone de restitution
  col = colrest
  Set P = deb(1, 2).Resize(6, 2) '1ère zone de recherche
  For j = 1 To 6
    For k = 1 To 2
      If Application.CountIf(P, P(j, k)) > 1 Then
        If Application.CountIf(deb(1, colrest).Resize(, 6), P(j, k)) = 0 Then
          P(j, k).Copy deb(1, col)
          col = col + 1
        End If
      End If
    Next k
  Next j
  col = colrest
  Set P = deb(12, 2).Resize(6, 2) '2ème zone de recherche
  For j = 6 To 1 Step -1
    For k = 1 To 2
      If Application.CountIf(P, P(j, k)) > 1 Then
        If Application.CountIf(deb(2, colrest).Resize(, 6), P(j, k)) = 0 Then
          P(j, k).Copy deb(2, col)
          col = col + 1
        End If
      End If
    Next k
  Next j
  Set deb = deb.EntireColumn.Find(1, deb, xlValues, xlWhole) 'recherche du 1
  If deb.Row = prem.Row Then Exit For
Next i
End Sub
Bonne nuit.

Bonne nuit.
 

Pièces jointes

  • Faire ressortir les duos d'une plage(1).xls
    37.5 KB · Affichages: 36

eriiic

XLDnaute Barbatruc
Re : RESOLU Faire ressortire les duos d'une plage...

Bonjour,

J'ai eu une autre lecture : que c'était un seul grand tableau dont tu voulais les doublons des blocs 6x2 toutes les 11 lignes.
Donc en tenant compte que de la position et pas des couleurs :
Code:
Sub duo()
    Dim dict, cle
    Dim lig As Long, pl As Range, c As Range
    Set dict = CreateObject("Scripting.Dictionary")
    Set pl = [C6:D11]
    Do While pl.Range("A1") <> ""
        dict.RemoveAll
        For Each c In pl
            If c <> "" Then dict(c.Value) = dict(c.Value) + 1
        Next c
        For Each cle In dict.keys
            If dict(cle) < 2 Then dict.Remove (cle)
        Next cle
        pl.Offset(, 4).Resize(1, dict.Count) = dict.keys
        Set pl = pl.Offset(11)
    Loop
    Set dict = Nothing
End Sub
eric
 

job75

XLDnaute Barbatruc
Re : RESOLU Faire ressortire les duos d'une plage...

Bonjour Guido, eriiiic,

@ eriiiic je pense que tu as mal lu les questions posées au post #1.

Mais voici une solution par fonction VBA utilisant le Dictionary :

Code:
Public dico As Object 'mémorise la variable, voir dans ThisWorkbook

Function Doublons(P As Range, Optional sens = 1)
'P est une plage 6 x 2, sens  a la valeur 1 ou -1
Dim t, i, j, x, a, b, n, temp(1 To 6)
t = P 'matrice, plus rapide
dico.RemoveAll 'RAZ
For i = IIf(sens = 1, 1, 6) To IIf(sens = 1, 6, 1) Step sens
  For j = 1 To 2
    x = t(i, j)
    If x <> "" Then dico(x) = dico(x) + 1
Next j, i
If dico.Count Then
  a = dico.keys: b = dico.items
  For i = 0 To UBound(a)
    If b(i) > 1 Then n = n + 1: temp(n) = a(i)
  Next i
End If
For i = n + 1 To 6
  temp(i) = "" 'texte vide
Next i
Doublons = temp 'vecteur ligne
End Function
L'objet dico est créé par la Workbook_Open.

Dans la feuille de calcul les couleurs et les bordures en colonnes G:L sont appliquées par MFC.

Fichier (2).

Nota : le Dictionary permet d'aller très vite s'il y a beaucoup de tableaux.

A+
 

Pièces jointes

  • Faire ressortir les duos d'une plage(2).xls
    34.5 KB · Affichages: 33
Dernière édition:

eriiic

XLDnaute Barbatruc
Re : RESOLU Faire ressortire les duos d'une plage...

Si, si, je pense savoir bien lire job75, bien que souvent je lise en diagonale comme beaucoup.
Mais peut-être m'as-tu mal lu ?
J'ai également vu plus bas "Les tableaux, jusqu'à 9, seront mis en place les uns sous les autres avec un espace de 11 lignes entre chaque tableau.."
Régulièrement il faut interpréter les demandes, c'est juste une autre possibilité.
Je n'affirme pas que c'est la bonne, loin de là puisqu'il y interprétation. Sans doute faut-il s'en tenir aux couleurs mais au cas où...
Est-ce si gênant de laisser place à l'imagination ?
 

job75

XLDnaute Barbatruc
Re : RESOLU Faire ressortire les duos d'une plage...

Re eriiiic,

Si tu avais bien lu tu aurais fait autre chose car il y a 2 plages 6 x 2 à traiter différemment dans chaque tableau :

- la 1ère (C6: D11) de haut en bas

- la 2ème (C17: D22) de bas en haut.

A+
 

Discussions similaires

Réponses
3
Affichages
428
Réponses
16
Affichages
614

Statistiques des forums

Discussions
312 775
Messages
2 092 022
Membres
105 150
dernier inscrit
maxissof