Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
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/03/2006, 14h45   #1
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 155
Points : 26
Points : 26
Par défaut [VBA] Recherche d'une valeur dans un autre fichiers puis

Bonjour,

J'ai plusieurs classeurs qui doivent se mettre à jour via un autre classeur.
Mon fichier n° (Clt1.xls) contient plusieurs colonne dont un identifiant en colonne B.
Dans mon fichier sources.xls j'ai le même identifiant avec 4 colonnes suplémentaire.
je souhaiterai que les 4 colonnes supplémentaires soit coller dans les colonnes H, I, J, K de Clt1.xls et ainsi de suite jusque la fin du fichier.

Merci @ à vous
Nicos77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 15h16   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
As-tu essayé de recenser les opérations à réaliser pour atteindre ton objectif ? Sinon, commence par là. Ce que tu nous demandes peut être réalisé manuellement. Tu enregistres la macro en le faisant et ensuite tu reviens nous voir pour qu'on t'arrange le code.

Juste un conseil mais si tu veux apprendre à décoder le code, c'est la meilleure école.

Allez, fais ça, on t'attends

A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 15h41   #3
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 155
Points : 26
Points : 26
Voila ou j'en suis !!!

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
Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 23/03/2006 par Mannes
'
Dim Valeur
Dim toto As String
'
    toto = Dir("C:\PourJean\tarif\*.xls", vbDirectory)
    Do While (toto <> "")
    Workbooks.Open Filename:="C:\PourJean\tarif\" + toto, UpdateLinks:=0
    'nom2 = Left(toto, Len(toto) - 4)
    'ActiveWorkbook.SaveAs Filename:= _
    '"C:\PourJean\" + nom2 + ".txt", FileFormat:=xlText, _
    'CreateBackup:=False
    'ActiveWorkbook.Close savechanges:=False
    Range("B8").Select
    Debug.Print Cells(8, 2).Value
    Valeur = Cells(8, 2).Value
    Open "C:\PourJean\PRIX_NICO.xls" For Input As #1
    Cells.Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Columns("A:A").Select
 
    Selection.Find(What:=" " & Valeur & " ", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    Range("B2011:E2011").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("1004_Feuil1.xls").Activate
    Range("H8:K8").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Windows("Classeur1.xls").Activate
    toto = Dir
Loop
 
 
End Sub
Je bloque sur la ligne
Code :
1
2
3
Selection.Find(What:=" " & Valeur & " ", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
Merci
Nicos77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 16h15   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Valeur est-elle une valeur ?

Si oui, tu dois rechercher un string, et donc :

Code :
Valeur = cstr(Cells(8, 2).Value )
Tu dis et supprime tes espaces dans find

Code :
1
2
Selection.Find(What:=Valeur, After:=ActiveCell, LookIn:=xlFormulas, _ 
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
A+

Edit
Pourquoi as-tu délesté ?
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 16h35   #5
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 155
Points : 26
Points : 26
Donc Valeur ets un num !!

j'ai reussi a trouvé le parametre !!

Par contre, j'ai pensé utilisé la recherchev pour ce que j'ai à faire mais je n'y parviens pas.

Voilà mon code maintenant

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
Dim Valeur
Dim toto As String
'
    toto = Dir("C:\PourJean\tarif\*.xls", vbDirectory)
    Do While (toto <> "")
    Workbooks.Open Filename:="C:\PourJean\tarif\" + toto, UpdateLinks:=0
    Range("B8").Select
    Debug.Print Cells(8, 2).Value
    Valeur = Cells(8, 2).Value
    Workbooks.Open Filename:="C:\PourJean\PRIX_NICO.xls", UpdateLinks:=0
    Cells.Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Columns("A:A").Select
 
    Selection.Find What:=" & Valeur & ", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False
 
 
    Range("B2011:E2011").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("1004_Feuil1.xls").Activate
    Range("H8:K8").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
Je souhaiterai apres avoir trouvé ma valeur !! connaitre les coordonnées de la celulle ou je me trouve afin de selectionner les 4 dernieres colonnes de cette ligne pour les coller dans mon prmeier fichier.

Merci
Nicos77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 16h39   #6
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 155
Points : 26
Points : 26
Code :
1
2
3
4
5
    Selection.Find What:=" & Valeur & ", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False
 
    MsgBox ActiveCell.Address
Ceci me donne la valeur A1 et non la valeur de ma celulle trouvé.

Merci
Nicos77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 16h43   #7
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 155
Points : 26
Points : 26
En fait il me faudrai les coordonnées de la celulle ou se trouve ma valeur

Merci
Nicos77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 17h10   #8
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Faut tout y dire...
Si tu as fait valeur = cstr(...) comme je t'ai dit, tu fais ensuite
Code :
1
2
3
Selection.Find What:=Valeur, After:=ActiveCell, LookIn:=xlFormulas, _ 
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
        MatchCase:=False, SearchFormat:=False
Ensuite, seulement tu peux faire
Code :
msgbox activecell.address
A+

Edit
Et tu auras l'adresse de la cellule dans laquelle i y aura Valeur... piskifotoutedire
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2006, 09h11   #9
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 155
Points : 26
Points : 26
Citation:
Envoyé par ouskel'n'or
Faut tout y dire...
Si tu as fait valeur = cstr(...) comme je t'ai dit, tu fais ensuite
Code :
1
2
3
Selection.Find What:=Valeur, After:=ActiveCell, LookIn:=xlFormulas, _ 
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
        MatchCase:=False, SearchFormat:=False
Ensuite, seulement tu peux faire
Code :
msgbox activecell.address
A+

Edit
Et tu auras l'adresse de la cellule dans laquelle i y aura Valeur... piskifotoutedire
Bonjour !!!

la valeur retourné dans la msgbox est $A$1 !! Ce n'est pas l'adresse de ma celulle !!

merci
Nicos77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2006, 09h26   #10
Inactif
 
Avatar de jmfmarques
 
Inscription : décembre 2005
Messages : 3 784
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 3 784
Points : 4 125
Points : 4 125
je n'en crois pas mes yeux !
FOVREMANTOUDIRE
jmfmarques est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2006, 09h28   #11
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
avec ta fonction de recherche tu cherche la chaine de caractére : & Valeur &

tiens voila de quoi remplacer ta ligne find

Code :
1
2
3
4
5
6
7
8
9
10
Dim r As Range
    Set r = Selection.Find(What:=Valeur, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
   If r Is Nothing Then
     MsgBox Valeur & " Introuvable !"
    exit Sub 'Voir ici ce que tu ve faire si tu trouve pas...
     Else
    r.Select
    End If
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2006, 11h24   #12
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Citation:
Bonjour !!!

la valeur retourné dans la msgbox est $A$1 !! Ce n'est pas l'adresse de ma celulle !!
C'est que Valeur n'a pas été trouvée. Suis le conseil de bbil, il est plein de bons conseils

A+
ouskel'n'or 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 18h56.


 
 
 
 
Partenaires

Hébergement Web