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 !
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 !