Chercher valeur cellule dans autre répertoire

Seb -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
je veux créer une appli VBA et j'aimerais savoir pkoi mon code bloque, je voudrais aller chercher une valeur
dans la base de donnée du classeur ProjetVBAHITRATIO.xls en fonction de leur date, pour la copier dans le classeur ProjetVBABOUGEOIS.xls.

voici mon code :

Sub macrook()

Dim i As Integer

report = "C:\Documents and Settings\Seb\Mes documents\Cours\ProjetVBABOUGEOIS.xls"

base = "C:\Documents and Settings\SebMes documents\Cours\ProjetVBAHITRATIO.xls"

For i = 1 To 7

If Workbooks(base).ActiveSheet("Feuil1").Cells(i, 2) >= DateValue("12/01/2004") And Workbooks(base).ActiveSheet("Feuil1").Cells(i, 2) <= DateValue("12/02/2004") Then
Workbooks(report).Sheets("Feuil1").Cells(i, 2) = Workbooks(base).Sheets("Feuil1").Cells(i, 2)

End If

Next

End Sub

Pouvez vous m'aider ?

10 réponses

lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bonjour,
Essaye avec...
Sub macrook()
Dim i As Integer
Dim Report As Workbooks
Dim Base As Workbooks
    'Supposant que cette macro est dans le classeur Base
    Set Report = "C:\Documents and Settings\Seb\Mes documents\Cours\ProjetVBABOUGEOIS.xls"
    Report.Open                       'Manquerait pas un Slach là ?
    Set Base = "C:\Documents and Settings\SebMes documents\Cours\ProjetVBAHITRATIO.xls"
    'Je ne peu rien dire sur les conditions faute de renseignement
    For i = 1 To 7
        If Workbooks(Base).ActiveSheet("Feuil1").Cells(i, 2) >= DateValue("12/01/2004") And Workbooks(Base).ActiveSheet("Feuil1").Cells(i, 2) <= DateValue("12/02/2004") Then
            Workbooks(Report).Sheets("Feuil1").Cells(i, 2) = Workbooks(Base).Sheets("Feuil1").Cells(i, 2)
        End If
    Next
End Sub

A+
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Sub MacroSuite()
'Plus simple
Dim i As Integer
Dim Report As Worksheet
Dim Base As Worksheet
    Workbooks("C:\Documents and Settings\Seb\Mes documents\Cours\ProjetVBABOUGEOIS.xls").Open
    Set Report = woorkbooks("ProjetVBABOUGEOIS.xls").Sheets("Feuil1")
    Set Base = Workbooks("ProjetVBAHITRATIO.xls").Sheets("Feuil1")
    For i = 1 To 7
        If Base.Cells(i, 2) >= DateValue("12/01/2004") And _
                Base.Cells(i, 2) <= DateValue("12/02/2004") Then
            Report.Cells(i, 2) = Base.Cells(i, 2)
        End If
    Next
End Sub

Je ne peu toujours pas tester vu qu'il me manque tes classeurs et les renseignement nécessaires.
Tu dis.
A+
0
Seb
 
Salut Lermitte 222 merci de ton aide !
malheureusement j'ai testé ton code et ça marche toujours pas....
moi perso je continue de chercher mais j'arrive pas à trouver...

Si vous avez d'autres idée n'hésitez pas !!!!
0
herod1983 Messages postés 200 Statut Membre 5
 
Salut

Essai comme ça

Set Report = woorkbooks("ProjetVBABOUGEOIS.xls").Sheets("Feuil1")
    Set Base = Workbooks("ProjetVBAHITRATIO.xls").Sheets("Feuil1")

For i = 1 To 7
        If Base.Cells(i, 2).value >= "12/01/2004" then  
               if Base.Cells(i, 2).value <= "12/02/2004" Then
                     Report.Range("A1").value = Base.Cells(i, 2).value
               End If
        End if
Next


Pas besoin de t'encombrer avec un format date ce que tu cherche c'est seulement une correspondance, par contre ta boucle rend compte seulement pour la feuille base mais pas report donc pour voir si sa fonctionne déjà fait une copie dans un range comme ceux-ci.
0
Seb
 
Encore merci Herod1983 mais ça marche tjrs pas grrrrrrrrr

si on part de mon code initial,ça me marque une erreur à la ligne soulignée et je vois pas ou est le souci ! sniif

Sub macrook()
Dim i As Integer

report = "C:\Documents and Settings\Mathieu Merkiled\Mes documents\Cours\ProjetVBABOUGEOIS.xls"
base = "C:\Documents and Settings\Mathieu Merkiled\Mes documents\Cours\ProjetVBAHITRATIO.xls"

For i = 1 To 7
If Workbooks(base).ActiveSheet("Feuil1").Cells(i, 2) >= DateValue("12/01/2004") And Workbooks(base).ActiveSheet("Feuil1").Cells(i, 2) <= DateValue("12/02/2004") Then
Workbooks(report).Sheets("Feuil1").Cells(i, 2) = Workbooks(base).Sheets("Feuil1").Cells(i, 2)
End If

Next

End Sub
0
herod1983 Messages postés 200 Statut Membre 5
 
désolé j'ai fais trop vite je suis dessus

je te tiens au courant
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
herod1983 Messages postés 200 Statut Membre 5
 
la c'est bon la macro de recherche fonctionne il y avait juste des .value a intégrer ta macro était bonne

par contre je ne peux pas voir pour la copie vers un autre classeur
en tous cas il te faudra je pense d'abord ouvrir le classeur report avant de copier des valeurs dedans, comme je t'es mis.

For i = 1 To 7
        If Cells(i, 2).Value > DateValue("11/01/2004") And _
               Cells(i, 2).Value < DateValue("13/02/2004") Then
          
          workbook(report).open      
          report.sheets(1).Cells(i, 2).Value = Cells(i, 2).Value
               
        End If
Next i
0
Seb
 
heu.....ça marche toujours pas j'ai encore essayé un autre code mais ça veut pas
c'est un truc de fou !!!!
0
herod1983 Messages postés 200 Statut Membre 5
 
pour le code de recherche si tu le fais que dans le classeur base sa fonctionne c'est la copie dans le classeur report qui déconne je cherche aussi lol
0
herod1983 Messages postés 200 Statut Membre 5
 
Voila la c'est bon change juste le chemin de report

report = "f:\Textes\essai2.xls"


For i = 1 To 7
        If Cells(i, 2).Value > DateValue("11/01/2004") And _
               Cells(i, 2).Value < DateValue("13/02/2004") Then
                Application.DisplayAlerts = False
                Workbooks.Open report, 0, ReadOnly:=False
                ActiveWorkbook.Sheets(1).Cells(i, 2).Value = Cells(i, 2).Value
                Application.DisplayAlerts = True
        End If
Next i

End Sub

0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Re,
Si au moins tu disait l'erreur que tu à ? le texte et le N° ?
Quel est le nom du classeur DEJA ouvert et dans lequel tu met la macro ?
"Ca marche pas" ça ne nous dis pas grand chose.
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bon, j'ai créer des classeurs suivant tes explications, j'ai fait la macro et elle fonctionne (j'ai tester)
Sub MacroSuite()
'Plus simple
Dim i As Integer
Dim Report As Worksheet
Dim Base As Worksheet
Dim Nom1 As String, Nom2 As String
Dim Chemin As String
'de ProjetVBAHITRATIO.xls  >>> à >>>  ProjetVBABOUGEOIS.xls
'Base = ProjetVBAHITRATIO.xls et est le classeur ouvert
    Nom1 = "ProjetVBABOUGEOIS.xls"
    Chemin = Environ$("USERPROFILE") & "\mes documents\Cours\ProjetVBABOUGEOIS.xls"
    Workbooks.Open (Chemin)
    Set Report = Workbooks(Nom1).Sheets("Feuil1")
    Nom2 = ThisWorkbook.Name
    Set Base = Workbooks(Nom2).Sheets("Feuil1")
    For i = 1 To 7
        If Base.Cells(i, 2) >= DateValue("12/01/2004") And _
                Base.Cells(i, 2) <= DateValue("12/02/2004") Then
            Report.Cells(i, 2) = Base.Cells(i, 2)
        End If
    Next
End Sub

J'ai décomposé les noms pour pouvoir suivre le déroulement de la macro, mais ce n'est pas nécessaire.
Pour test colle la macro tel quel.
Si ça coince quel que part, dis le N° de l'erreur et sont libellé.
A+
A+
0