[VBA] copié/collé entre deux classeurs avec une condition

ange180190

XLDnaute Junior
Bonjour à tous ,

j'ai essayé de me débrouiller toute seule mais je bloque depuis des heures sur ce code...au secouuuuurs :eek: j'ai besoin de votre aide
voici le code : ( j'ai mis en rouge où ça "coince" et l'explication en dessous )

Code:
Sub Copie()

 Dim MonRepertoire As String, fs As FileSearch, wb As Workbook, wb2 As Workbook
MonRepertoire = "C:\MesDossiers\LISTE_dossiers"
Set fs = Application.FileSearch
With fs
    .NewSearch
    .LookIn = MonRepertoire
    .Filename = Range("B1").Value & "*" & ".xls"
    If .Execute = 0 Then Exit Sub
    Set wb = Workbooks.Open(.FoundFiles(1))
End With
Set wb2 = ThisWorkbook


wb.Sheets("Gestion dossiers").Range("E2:F3").Copy Destination:=wb2.Sheets("Feuil1").Range("L6:M7")
wb.Sheets("Gestion dossiers").Range("E2:F3").Copy Destination:=wb2.Sheets("Feuil1").Range("D6:E7")


Dim i As Integer

For i = 9 To 200

   [COLOR="Red"]Windows("wb").Activate
  

     If wb.Sheets("Gestion dossiers").Cells(1, i).Value >= 49 And wb.Sheets("Gestion dossiers").Cells(1, i).Value <= 30 Then[/COLOR]     
     Do
     
   wb.Sheets("Gestion dossiers").Range("B&(i)").Copy Destination:=wb2.Sheets("Feuil1").Range("K1") ' copie le numéro de dossier de Bi dans la cellule K1

    wb2.Sheets("Feuil1").Range("F7").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "Dossier :" & Range("K1")
   
    wb2.Sheets("Feuil1").Range("Q7:R7").Select
    ActiveCell.FormulaR1C1 = "Dossier :" & Range("K1")
    
 
  Loop While i = 200

End If

 Next

End Sub

en fait je voudrais dans le classeur que j'ai cherché qu'il me vérifie toute la colonne A et quand il tombe sur des valeurs compris entre 30 et 49 , il me copie le numéro qui se trouve dans la cellule B correspondante et le colle dans mon autre classeur...je sais pas si c'est très clair :confused:

mille merci à ceux qui prendront le tps de lire tout ca et de m'aider :)
ange180190.
 

jojo3008

XLDnaute Junior
Re : [VBA] copié/collé entre deux classeurs avec une condition

coucou ange,
je pense que l indice i ne va pas etre implémenté en fait parce le Next i est en dehors du Loop .. qu en pense tu?

edit : remplace ton For par un Do et jpense que ca devrait marcher
 

Pierrot93

XLDnaute Barbatruc
Re : [VBA] copié/collé entre deux classeurs avec une condition

Re Ange, bonjour Jojo

regarde peut être ceci :

Code:
Option Explicit
Option Explicit
Sub Copie()
Dim MonRepertoire As String, fs As FileSearch, wb As Workbook, wb2 As Workbook
Dim i As Integer
MonRepertoire = "C:\MesDossiers\LISTE_dossiers"
Set fs = Application.FileSearch
With fs
    .NewSearch
    .LookIn = MonRepertoire
    .Filename = Range("B1").Value & "*" & ".xls"
    If .Execute = 0 Then Exit Sub
    Set wb = Workbooks.Open(.FoundFiles(1))
End With
Set wb2 = ThisWorkbook

wb.Sheets("Gestion dossiers").Range("E2:F3").Copy Destination:=wb2.Sheets("Feuil1").Range("L6:M7")
wb.Sheets("Gestion dossiers").Range("E2:F3").Copy Destination:=wb2.Sheets("Feuil1").Range("D6:E7")

For i = 9 To 200
    If wb.Sheets("Gestion dossiers").Cells(1, i).Value >= 49 And wb.Sheets("Gestion dossiers").Cells(1, i).Value <= 30 Then
[COLOR="seagreen"]'comprends pas trop pourquoi répéter ces 2 instructions 192 fois...[/COLOR]
    wb.Sheets("Gestion dossiers").Range("B&(i)").Copy Destination:=wb2.Sheets("Feuil1").Range("K1")
    wb2.Sheets("Feuil1").Range("F7").Value = "Dossier :" & Range("K1")
    wb2.Sheets("Feuil1").Range("Q7:R7").Value = "Dossier :" & Range("K1")
[COLOR="SeaGreen"]'seules les dernières valeurs seront conservées...[/COLOR]
    End If
Next
End Sub

regarde les lignes en vert dans l'éditeur vba...

bon après midi
@+
 
Dernière édition:

ange180190

XLDnaute Junior
Re : [VBA] copié/collé entre deux classeurs avec une condition

Pierrot pour répondre à ta question la colonne A peut aller jusqu'à 200 donc s'il y a une valeur 32 par exemple ds A199 faut qu'il me la trouve aussi , tu vois ce que je veux dire ?

cette phrase pose problème : wb.Sheets("Gestion dossiers").Range("B&(i)").Copy Destination:=wb2.Sheets("Feuil1").Range("K1")
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : [VBA] copié/collé entre deux classeurs avec une condition

Re,

peut être inverser ...

Code:
If wb.Sheets("Gestion dossiers").Cells(1, i).Value[COLOR="Red"][B] >= 30 [/B][/COLOR]And _
    wb.Sheets("Gestion dossiers").Cells(1, i).Value [COLOR="red"][B]<= 49 [/B][/COLOR]Then
 

Discussions similaires

Statistiques des forums

Discussions
312 581
Messages
2 089 917
Membres
104 306
dernier inscrit
Bouhlal