Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/12/2011, 13h42   #1
Débutant
 
Avatar de FCL31
 
Inscription : août 2007
Messages : 672
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : août 2007
Messages : 672
Points : 184
Points : 184
Envoyer un message via MSN à FCL31
Par défaut Compléter un fichier à l'aide d'un autre

Bonjour à tous

J'ai un fichier Excel dans lequel je saisi des références de pièces.

A l'aide d'un bouton (ou autre), je voudrais que ce fichier soit complété (Désignation et prix) a l'aide d'un autre fichiers Excel qui sert de "base de données".

Toutefois, je voudrais choisir le fichier "base de données" à l'aide d'un explorateur de fichier du type "Explorateur Windows"

Merci de votre aide et joyeuse fête
FCL31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 13h47   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 920
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 920
Points : 7 237
Points : 7 237
Bonjour,

Tu peux utiliser FileDialog pour faire cela
http://excel.developpez.com/faq/?pag...cel#FileDialog
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 13h53   #3
Débutant
 
Avatar de FCL31
 
Inscription : août 2007
Messages : 672
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : août 2007
Messages : 672
Points : 184
Points : 184
Envoyer un message via MSN à FCL31
Merci beaucoup de ton aide mais je me doutais que cette parie la serait la plus simple a mettre en place
FCL31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 11h55   #4
Débutant
 
Avatar de FCL31
 
Inscription : août 2007
Messages : 672
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : août 2007
Messages : 672
Points : 184
Points : 184
Envoyer un message via MSN à FCL31
Il me manque toujours a savoir comment compléter mon fichier Excel avec un autre :
Par exemple, je saisi la références de plusieurs pièces dans un fichier Excel dans la colonne A
et à l'aide d'un bouton, j'ai le prix en colonne B et la désignation de la pièce en colonne C qui vont s’afficher automatiquement en fonction de la référence saisie.

Pour Info j'ai un fichier Excel avec la totalité des Prix, Réf et Désignation

Merci d'avance de votre aide
FCL31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 12h09   #5
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 920
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 920
Points : 7 237
Points : 7 237
et tu en es ou au niveau de ton code?
Quel est la structure du fichier contenant les prix?
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 14h32   #6
Débutant
 
Avatar de FCL31
 
Inscription : août 2007
Messages : 672
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : août 2007
Messages : 672
Points : 184
Points : 184
Envoyer un message via MSN à FCL31
Je viens de faire ce code qui marche pas mal mais il y aurait des modif a faire:
- le temps d’exécution est un peut long a mon gout
- Les données du fichiers sources sont apparentes sur le fichier d'utilisation

Le fichier sources contient 5 colonnes :
Préfixe
Référence
Description
Groupe fonction
Code Remise
Prix public


Si quelqu'un voit une modif a apporter !!


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Private Sub CommandButton1_Click()
'----------------------------------------------------
'---------Ouverture de la boite de dialogue----------
'----------------------------------------------------
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Le tite de la fenêtre:"
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
        .Filters.Add "Documents Word", "*.doc; *.docx; *.docm", 1
        .FilterIndex = 2
        .InitialView = msoFileDialogViewProperties
        .Show
    End With
'----------------------------------------------------
'--------------Inportation des donneés---------------
'----------------------------------------------------
    With ActiveSheet.QueryTables.Add(Connection:=Array( _
        "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=L:\Document technique\VOLVO\VTF TARIF PUBLIC PARTS 2011.x" _
        , _
        "ls;Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Databa" _
        , _
        "se Password="""";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global B" _
        , _
        "ulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Je" _
        , _
        "t OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
        ), Destination:=Range("I1"))
        .CommandType = xlCmdTable
        .CommandText = Array("'Fichier Light 2011$'")
        .Name = "VTF TARIF PUBLIC PARTS 2011"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .SourceDataFile = _
        SelectedItems
        .Refresh BackgroundQuery:=False
    End With
'----------------------------------------------------
'------Supprime les colonnes importées inutiles------
'----------------------------------------------------
    Range("I:I,L:M").Delete
'----------------------------------------------------
'---------Cherche Designations et Tarifs-------------
'----------------------------------------------------
For i = 1 To 25000
    For j = 1 To 100
        If Range("I" & i) = Range("A" & j) Then
            Range("B" & j) = Range("J" & i)
            Range("c" & j) = Range("k" & i)
        End If
    Next j
Next i
'----------------------------------------------------
'--------Supprime les données Importées--------------
'----------------------------------------------------
    Columns("I:K").Delete
'----------------------------------------------------
'----------------Nomme les colonnes------------------
'----------------------------------------------------
    Rows("1:1").Insert
    Range("A1") = "Référence"
    Range("B1") = "Désignation"
    Range("C1") = "Prix Unit HT"
'----------------------------------------------------
End Sub
Merci de votre aide


.
FCL31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 15h39   #7
Débutant
 
Avatar de FCL31
 
Inscription : août 2007
Messages : 672
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : août 2007
Messages : 672
Points : 184
Points : 184
Envoyer un message via MSN à FCL31
Bon j'ai résolu une parti de mon problème j'ai j'en ai encore un.

Pour masquer les données que j'ai pas besoin j'ai mis :
Code :
1
2
3
4
5
    Application.ScreenUpdating = False
 
...
 
    Application.ScreenUpdating = True
Mon gros probléme est que si je sais des référence (qui sont bonne) à la main, sa marche pas.

Si je fais un copie/coller de certaines réf du fichiers source pour les mettre sur mon fichier, sa marche

J'ai pensais à un problème de mise en forme donc j'ai mis :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
    Cells.Font.Bold = False
 
    Columns("I:I").Select
    Selection.Copy
    Columns("A:A").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
 
    Columns("A:A").ColumnWidth = 12
    Columns("A:A").NumberFormat = "@"
    Columns("I:I").NumberFormat = "@"
    Range("A1").Select
Mais sa marche toujours pas

FCL31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h49.


 
 
 
 
Partenaires

Hébergement Web