VBA-recherche dans TCD de plusieurs items + coller la valeur dans 2ème fichier

Vero2782

XLDnaute Nouveau
Bonjour,

Voici 4 jours que je travaille sur cette macro. J'ai eu une journée de cour en VBA l'an dernier et ouff la matière est loin.

Fichier 1: "Master" Sert à Résumé l'analyse.
Fichier 2: "Data" J'extrais des données d'une base de donnée et je fais un Tableau croisé dynamique avec ces données. Le TCD me donne le nombre de photos prise par type (ex.Édifice, maison, Parc) pour chaque client. (Clients en colone, Type de photos en rangées)

Le premier problème que je rencontre est que lorsque j'extrais les données le système m'ajoute des espaces après tous les mots (Nom des clients, types de photos etc.) Donc, j'essaie d'utiliser des recherches verticales afin de manipuler le moins possible mes données brutes.

Donc...

Étape 1 : Dans mon fichier Master, onglet interface, l'utilisateur entre un no de client et la macro fait une recherche du nom du client (écrit comme dans la base de données avec les 6-10 espaces de la fin qui sont innutiles) et le mémorise.

Maintenant, je veux qu'excel mémorise le nombre de photo de chaque type pour ce client et qu'il me l'écrive dans un deuxième onglet du fichier no1 (fichier Master, Onglet Photos) - Je veux qu'il prenne en mémoire que le nombre de photos (pas le type car le type est aussi écrit avec le nombreux espaces et s'il me copie le type avec ces espaces-là, je devrai refaire mes graphiques à chaque fois)

Donc la macro doit rechercher le nombre de photos de type Édifice (avec espace) pour le client 1 (avec espace) dans le fichier "data" onglet "TCDPhotos" et me le coller vis-à-vis "Édifice" (sans espace) dans le fichier "Master" Onglet "Photos" pour faire mon graphique.

et c'est là que je bloque j'ai trouvé un code qui je crois fonctionnerait mais mes adaptation ne fonctionnent pas et je suis pas certaine qu'il continuera sa recherche a cause du "Nothing" .

Je suis vraiment perdue :(

Voici mon code pour le moment :

Sub photos()

Dim ClientName As String
Dim NoClient As String
Dim T_NomClient As Range

Windows("Master.xls").Activate
Sheets("Interface").Select

Set T_NomClient = Range("$A$4:$B$10")

NoClient = Range("F6")

ClientName = Application.WorksheetFunction.VLookup(Sheets("interface").Range("f6"), T_NomClient, 2, False) 'OK la formule trouve mon Client 1

MsgBox (ClientName), vbOKOnly 'msgbox vartype savoir ce qu'il a stocké comme info... ! a supprimer plus tard


'Code Fonctionne presque

Dim WsS As Worksheet, WsC As Worksheet
Dim C As Range, Cel As Range
Set WsS = Workbooks("DATA.xlsx").Worksheets("TCDPhotos")
Set WsC = Workbooks("Master.xls").Worksheets("photos")
For Each C In WsC.Range("H2:H" & WsC.Range("C" & Rows.Count).End(xlUp).Row)
Set Cel = WsS.Columns("A").Find(C, , xlValues, xlWhole)
If Not Cel Is Nothing Then

Cel.Offset(0, 1).Copy C.Offset(0, 1)

End If
Next C
Set WsC = Nothing: Set WsS = Nothing
End Sub

Un gros merci d'avance !
 

Pièces jointes

  • Data.xlsx
    38.3 KB · Affichages: 32
  • Data.xlsx
    38.3 KB · Affichages: 27
  • Master.xlsx
    13.5 KB · Affichages: 26
  • Master.xlsx
    13.5 KB · Affichages: 26

chris

XLDnaute Barbatruc
Re : VBA-recherche dans TCD de plusieurs items + coller la valeur dans 2ème fichier

Bonjour

Avant de rentrer dans l'analyse du code une remarque : il est probable que l'extraction soit faite en champ de longueur fixe : quelle est l'extension du fichier extrait ?
 

Vero2782

XLDnaute Nouveau
Re : VBA-recherche dans TCD de plusieurs items + coller la valeur dans 2ème fichier

Bonjour,

Le système d'extraction me sort les données dans une feuille excel et exécute une macro pour me monter un TCD standard que je n'utiliserai pas pour ma macro. C'est un .xlsx

Merci !

Véro
 
Dernière modification par un modérateur:

chris

XLDnaute Barbatruc
Re : VBA-recherche dans TCD de plusieurs items + coller la valeur dans 2ème fichier

Re

Dommage que tu ne dispose par de l'original (la présence de macro indique déjà un traitement) car à mon avis, le problème des espaces devrait être réglé en amont.

A défaut je le ferais en aval en appliquant une fonction trim à l'ensemble des données, ce qui permettra de travailler normalement...
 

chris

XLDnaute Barbatruc
Re : VBA-recherche dans TCD de plusieurs items + coller la valeur dans 2ème fichier

Re

Dans le module de la feuille
Code:
Dim cellule As Range

For Each cellule In Range("a2:c" & Cells(1, 1).CurrentRegion.Rows.Count)
 cellule.Value = Trim(cellule)
Next

Si dans un module standard ajouter références classeur et feuille...
 

Vero2782

XLDnaute Nouveau
Re : VBA-recherche dans TCD de plusieurs items + coller la valeur dans 2ème fichier

Merci. ca fonctionne très bien avec les fichiers que je vous ai envoyé. Je vais tenter de l'appliquer que sur certaine colonnes de mon fichier original car j'ai 2497 lignes et 28 colones. Il faudrait que le fonction trim se fasse que sur les Colones I et Z.
 

Vero2782

XLDnaute Nouveau
Re : VBA-recherche dans TCD de plusieurs items + coller la valeur dans 2ème fichier

Dans mon fichier original, le nom du client en en colonne i et le type de photo en colonne Z.

Ça fonctionne très bien :) Un problème de réglé !

Véro
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof