Macro Recherche

zozo

XLDnaute Occasionnel
Bonjour à tout le Forum

J'ai procédé à réaliser une macro qui a pour objectif :

- Faire la Recherche sur la feuille "Ecritures" avec un identifiant composé de plusieurs cellules que j'ai ejecté à la cellule N1 pour pourvoir réaliser ma recherche.

- La recherche commence à partir de la 2eme ligne jusqu'à la dernière ligne.


Objectif de la recherche :

(Clé de départ ligne 1 suivie de la recherche, et ainsi de suite)

Si le résultat de la recherche est positif, je ne fais rien, dans le cas contraire, je copie la ligne intégrale sur la feuille "Résultats"

Même chose jusqu'à la dernière ligne.

QUESTIONS :

- Comment copier la ligne non trouver sur la feuille résultat ?
- Comment poursuivre ma recherche avec la clé suivante ?

Merci pour toute intervention.
 

Pièces jointes

  • Ecritures.xlsm
    32.3 KB · Affichages: 25

vgendron

XLDnaute Barbatruc
Hello

il nous manque quelques infos sur ce que tu veux faire..
une fois que tu as créé la clé.. tu en fais quoi?
tu cherches quoi et à quel endroit? et une fois trouvé.. que fais tu?

la clé doit elle être créée pour chaque ligne de la feuille "écritures" ?
VB:
Sub Analyse()
'
' Analyse Macro
'
Dim nbl As Integer
Dim Cle As String
Dim Mt As Integer

With ActiveSheet
     nbl = .Range("A" & .Rows.Count).End(xlUp).Row - 1
   
    For i = 2 To nbl
        .Range("P" & i) = nbl 'copie du nombre de lignes en Pi
        .Range("N" & i) = .Range("D" & i) & .Range("F" & i) & .Range("O" & i) 'création de la clé avec les cellules colonne D F et O
     Next i
   
End With


End Sub
 

zozo

XLDnaute Occasionnel
La recherche s'effectue sur toutes les lignes de la feuille "Écritures"

Au départ, la clé se crée de la 1ere ligne, et je procède à la recherche, une fois que j’atteins la dernière ligne, une nouvelle clé se crée à partir de la 2eme ligne et ainsi de suite jusqu'à la fin.

Pour le résultat, Dans le cas où je trouve une ligne qui correspond à ma condition de recherche, donc cette ligne ne m'intéresse pas en ne faisant rien, dans le cas contraire je copie la ligne intégrale liée à la clé de recherche sur la feuille Résultats.

Merci pour ton aide
 

vgendron

XLDnaute Barbatruc
Je ne comprend pas bien..

1) exemple de la première ligne, tu crées une clé avec les colonnes D F et O ===> 106073401010
2) Cette clé.. tu la cherches sur toutes les lignes.. oui.. mais dans quelle colonne?
==> à priori.. vu que la clé a été construite à partir de 3 colonnes différentes;.. tu ne la trouvera jamais...??
 

zozo

XLDnaute Occasionnel
Je m'explique :

l'objectif de mon travail c'est d'analyser toutes les écritures (débit & crédit).

je m'intéresse aux écriture qui n'ont que le montant au débit ou au crédit uniquement, donc c'est des écritures non soldées, alors je doit les faire apparaitre sur la feuille résultats.

la composition de la clé : Affectation(colonne D)+compte(colonneF)+(la somme de ENT(100*(G+H))
D=106073 F=401010 ENT(100*(G+H))=1101069 donc la clé est 1060734010101101069

La recherche se fait à partir de la composition des cellules indiquées sur chaque ligne.
 

vgendron

XLDnaute Barbatruc
Bon.. je ne comprend toujours pas....

voir PJ
dans ton fichier d'origine.. il n'y a jamais de lignes identiques==> elles sont donc toutes recopiées...

pour tester ma macro. j'ai juste recopié la ligne en jaune pour en avoir au moins une qui soit trouvée...
je te laisse regarder le code que j'ai commenté
 

Pièces jointes

  • Ecritures.xlsm
    61.4 KB · Affichages: 23

vgendron

XLDnaute Barbatruc
Code à corriger avec celui ci car je ne supprimais QUE le doublon
VB:
Sub Analyse()
'
' Analyse Macro
'
Dim nbl As Integer
Dim Cle As String
Dim Mt As Integer

Dim TabEcritures() As Variant 'déclare un tablo VBA

With ActiveSheet 'dans la feuille active (Ecritures)
    nbl = .Range("A" & .Rows.Count).End(xlUp).Row - 1 'récupère le nombre de lignes de la feuille
    TabEcritures = .Range("A2:N" & nbl).Value 'on met tout le tableau (+1 colonne) dans le tablo VBA
   
    For i = LBound(TabEcritures, 1) To UBound(TabEcritures, 1) - 1 'pour chaque ligne du tableau
        clé = TabEcritures(i, 4) & TabEcritures(i, 6) & Int(100 * (TabEcritures(i, 7) + TabEcritures(i, 8))) 'on crée la clé
        For j = i + 1 To UBound(TabEcritures, 1) 'pour toutes les lignes suivantes
            If TabEcritures(j, 4) & TabEcritures(j, 6) & Int(100 * (TabEcritures(j, 7) + TabEcritures(j, 8))) = clé Then 'si on retrouve la meme clé
                TabEcritures(j, UBound(TabEcritures, 2)) = "Trouvé" 'on écrit "trouvé" dans la dernière colone du tablo VBA
                TabEcritures(i, UBound(TabEcritures, 2)) = "Trouvé"
            End If
        Next j
    Next i
End With

With Sheets("Résultats") 'dans la feuille résultat
    .UsedRange.Offset(1, 0).Delete 'j'efface tout sauf la ligne d'entete
    .Range("A2").Resize(UBound(TabEcritures, 1), UBound(TabEcritures, 2)) = TabEcritures 'on colle tout le tablo VBA dans la feuille
    .Range("A1").Resize(UBound(TabEcritures, 1), UBound(TabEcritures, 2)).AutoFilter Field:=14, Criteria1:="<>" 'on filtre la dernière colonne avec "trouvé"
    Application.DisplayAlerts = False 'on désactive les messages utilisateur
    .Range("A2").Resize(UBound(TabEcritures, 1), UBound(TabEcritures, 2)).SpecialCells(xlCellTypeVisible).Delete 'on supprime les lignes "trouvé"
    Application.DisplayAlerts = True 'on reactive les mesage
    .Range("A1").Resize(UBound(TabEcritures, 1), UBound(TabEcritures, 2)).AutoFilter 'on enlève le filtre
End With

End Sub
 

zozo

XLDnaute Occasionnel
Bonsoir vgendron,

Je suis rentré, je viens d'essayer la macro, elle me donne le résultat que je cherche, sauf :

1 - quand le montant est au crédit et il n'y a pas de doublon, la ligne n’apparaît pas sur la feuille résultat, mais par contre lorsqu'il est au crédit ça marche très bien

Ci-joint un exemple de 5 lignes, je devais avoir 3 lignes (3-4-5), le résultat ne donne que 2 lignes dont leur montants est au débit.

2 - Dans la zone PÉRIODE de la feuille résultat, le format a changé, au lieu d'afficher le contenu de la cellule qui est "02/2018" , il affiche "fevr-18".

3 - sur la feuille Résultats, le filtre s'active tout seul.

Pour infos, comme je suis chez moi, je travaille avec excel 2003, au boulot avec excel 2007.

Et merci encore.
 

Pièces jointes

  • Ecritures.xls
    47.5 KB · Affichages: 21

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal