Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recherche les cellules remplies & lignes liées

KEYVIN67

XLDnaute Nouveau
Bonjour,

Mon sujet se trouve dans le fichier ci-joint.

Merci d'avance pour vos réponses.

Cordialement,

Kévin
 

Pièces jointes

  • Modèle recherche récidives.xlsx
    9.9 KB · Affichages: 20

vgendron

XLDnaute Barbatruc
Bonjour voir PJ
par formule. je ne sais trouver QUE les lignes avec un numéro de récidive.. pas les lignes associées par le numéro de client
par macro. il y a tout
 

Pièces jointes

  • Modèle recherche récidives.xlsm
    19.3 KB · Affichages: 12

job75

XLDnaute Barbatruc
Bonjour KEYVIN67, vgendron,

Ce problème se règle parfaitement par formule, voyez le fichier joint.

Edit : pour tester j'ai recopié le tableau source jusqu'à la ligne 1000.

Avec les formules tirées jusqu'à la ligne 404 le recalcul se fait chez moi en 8,2 secondes, c'est long.

A+
 

Pièces jointes

  • Modèle recherche récidives(1).xlsx
    17.9 KB · Affichages: 12
Dernière édition:

job75

XLDnaute Barbatruc
Re,

Avec cette macro dans le code de la feuille c'est nettement plus rapide :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dest As Range, d As Object, t, i&, n&, resu(), j%
Set dest = [G5] '1ère cellule de destination, à adapter
t = [A4].CurrentRegion.Resize(, 5) 'matrice, plus rapide
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
For i = 2 To UBound(t)
    If t(i, 5) <> "" Then d(t(i, 2)) = "" 'liste des clients des récidives
Next
Application.EnableEvents = False 'désactive les évènemnts
If d.Count Then
    For i = 2 To UBound(t)
        If d.exists(t(i, 2)) Then
            n = n + 1
            ReDim Preserve resu(1 To 5, 1 To n)
            For j = 1 To 5
                resu(j, n) = t(i, j)
            Next j
        End If
    Next i
    '---transposition---
    For i = 1 To n
        For j = 1 To 5
            t(i, j) = resu(j, i)
    Next j, i
    '---restitution---
    If FilterMode Then ShowAllData 'si la feuille est filtrée
    dest.Resize(n, 5) = t
End If
dest(n + 1).Resize(Rows.Count - n - dest.Row + 1, 5).ClearContents 'RAZ sous le tableau
Application.EnableEvents = True 'réactive les évènemnts
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
Fichier joint, avec un tableau source recopié sur 1000 lignes la macro s'exécute en 0,02 seconde.

A+
 

Pièces jointes

  • Modèle recherche récidives VBA(1).xlsm
    25.7 KB · Affichages: 11

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…