XL 2010 Aidez moi je craque

storme

XLDnaute Nouveau
Bonsoir,

Je me permets de vous solliciter car j'ai un gros souci que je n'arrive pas à résoudre.
Je vous explique j'ai un classeur sur lequel j'ai plusieurs onglets.
Un onglet :tva et no tva
Mon souhait serait d'arriver en faire un seul et récupérer certaines colonnes pour obtenir les clients concernés à partir du n° de pièce

les coclonnes renseignes sur la feuille
Pouvez-vous m'aider svp ça fait des heures que je suis dessus et je craque là?
 
Solution
cad ?le fichier est trop volumineux
Le fichier n'est pas indispensable mais il va falloir vous débrouiller toute seule.

Placez cette macro dans le code de la feuille "resultat" :
VB:
Private Sub Worksheet_Activate()
Dim resu(), d As Object, tablo, i&, n&
ReDim resu(1 To Rows.Count, 1 To 8)
Set d = CreateObject("Scripting.Dictionary")
'---feuille encours (création de la liste des numéros)---
tablo = Feuil1.UsedRange.Resize(, 4)
For i = 2 To UBound(tablo)
    If tablo(i, 4) <> "" Then d(tablo(i, 4)) = ""
Next
'---feuille tva---
tablo = Feuil2.UsedRange.Resize(, 34)
For i = 2 To UBound(tablo)
    If d.exists(tablo(i, 1)) Then
        n = n + 1
        resu(n, 1) = tablo(i, 1)
        resu(n, 2) = tablo(i, 7)
        resu(n, 3) =...

job75

XLDnaute Barbatruc
Bonjour storme, CISCO, Dugenou, le forum,

Il faudrait indiquer, pour chacune des 3 premières feuilles, quelles sont les colonnes à reporter dans la feuille resultat car en l'état ce n'est pas du tout clair.

Bonne journée.
 

storme

XLDnaute Nouveau
les colonnes à reporter sont celles que j'ai mis en en têtes sur la feuille résultat.
Mon objectif est de trouver à partir du numéro de pièce les clients présent de la feuille encours (C-CLIENT "colonne A") qui comporte plus de 3000 lignes en les comparant à celles des feuilles tva (colonne g)et no tva (colonne l); est reporter les montants des factures.
afin d 'assenir une base de données clients
 

job75

XLDnaute Barbatruc
Bon voici une solution VBA dans le fichier joint, à partir de ce que je comprends :
VB:
Private Sub Worksheet_Activate()
Dim resu(), tablo, i&, n&
ReDim resu(1 To Rows.Count, 1 To 8)
'---feuille encours---
tablo = Feuil1.UsedRange.Resize(, 12)
For i = 2 To UBound(tablo)
    If tablo(i, 4) <> "" Then
        n = n + 1
        resu(n, 1) = tablo(i, 4)
        resu(n, 3) = tablo(i, 3)
        resu(n, 6) = tablo(i, 9)
        resu(n, 7) = tablo(i, 12)
        resu(n, 8) = Feuil1.Name 'repérage feuille
    End If
Next
'---feuille tva---
tablo = Feuil2.UsedRange.Resize(, 34)
For i = 2 To UBound(tablo)
    If tablo(i, 1) <> "" Then
        n = n + 1
        resu(n, 1) = tablo(i, 1)
        resu(n, 2) = tablo(i, 7)
        resu(n, 3) = tablo(i, 19)
        resu(n, 4) = tablo(i, 15)
        resu(n, 5) = tablo(i, 17)
        resu(n, 6) = tablo(i, 16)
        resu(n, 7) = tablo(i, 34)
        resu(n, 8) = Feuil2.Name 'repérage feuille
    End If
Next
'---feuille notva---
tablo = Feuil3.UsedRange.Resize(, 28)
For i = 2 To UBound(tablo)
    If tablo(i, 23) <> "" Then
        n = n + 1
        resu(n, 1) = tablo(i, 23)
        resu(n, 2) = tablo(i, 12)
        resu(n, 3) = tablo(i, 26)
        resu(n, 6) = tablo(i, 28)
        resu(n, 7) = tablo(i, 27)
        resu(n, 8) = Feuil3.Name 'repérage feuille
    End If
Next
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A2] '1ère cellule de destination, à adapter
    If n Then .Resize(n, 8) = resu
    .Offset(n).Resize(Rows.Count - n - .Row + 1, 8).ClearContents 'RAZ en dessous
End With
Columns.AutoFit 'ajustement largeurs
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
La macro est placée dans le code de la feuille "resultat" et se déclenche quand on active cette feuille.

C'est très simple : les 3 premières feuilles sont traitées l'une après l'autre.

A+
 

Pièces jointes

  • recherche donnees(1).xlsm
    28.2 KB · Affichages: 6

Discussions similaires

Réponses
2
Affichages
614
Réponses
8
Affichages
430

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG