recherche dans variable tableau

kevenpom

XLDnaute Junior
Bonjour forum
Boujours tout le monde merci de prendre le temps de nous aider nous jeune débutant.
j'ai fait une recherche sur le forum je suis tombé sur sa
Sauf que moi mon tableau est dans une variable excel; et j'ai essayer de trouver une manière mais j'en suis incapable voici mon code

Code:
Option Explicit
Option Base 1
Dim LIG, LIG3, VERIFJOB As Long
Dim j, K, L, I, N As Long
Dim Chemin As String
Dim ws, ws2, ws3, ws4, ws5 As Worksheet
Dim c, trouve As Range
Dim Fu As Variant
Dim NoMrp As String
Public LastExec As Long


Sub MACROKeven()

Application.DisplayAlerts = False
On Error Resume Next
Sheets("Sheet1").Clear
Sheets("EXECUTE").Delete
Sheets("RAPPORT").Delete
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "EXECUTE"
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "RAPPORT"
Application.DisplayAlerts = True
Sheets("Sheet1").Select
Sheets("Sheet1").Cells(1, 1).Select


Set ws = ThisWorkbook.Worksheets("Sheet1")
Set ws2 = ThisWorkbook.Worksheets("EXECUTE")
Set ws5 = ThisWorkbook.Worksheets("RAPPORT")

  Chemin = ThisWorkbook.Path ' même dossier
 ' Chemin = "D:\keven\désuetude\bd.xls" 'a mettre
 Workbooks.Open Chemin & "\fu.xls"
        With ActiveWorkbook
        With .Worksheets("feuil1")
       Set Fu = .Range("A1:A" & .Range("A65536").End(xlUp).Row).Value
        End With
   .Close
        End With
            
            
LIG = ws.Range("B65536").End(xlUp).Row
LIG3 = 1
With ws2
For I = 1 To LIG
    If ws.Cells(I, 1) = "OF:" Then
            ws2.Cells(LIG3, 1) = ws.Cells(I, 2) & ws.Cells(I, 3) 'ecrit job + sufixe
            ws2.Cells(LIG3, 6) = ws.Cells(I, 5)                  'cout total
            ws2.Cells(LIG3, 7) = ws.Cells(I, 7)                  'lancé
            ws2.Cells(LIG3, 8) = ws.Cells(I, 14)                 'achevé
        
                If ws2.Cells(LIG3, 7) <> ws2.Cells(LIG3, 8) Or ws2.Cells(LIG3, 8) = 0 And ws2.Cells(LIG3, 6) <> 0 Then
                    ws2.Rows(LIG3).Interior.ColorIndex = 9
                    ws2.Cells(LIG3, 9) = 1
                    VERIFJOB = 1
                Else
                    ws2.Rows(LIG3).Interior.ColorIndex = 4
                    ws2.Cells(LIG3, 9) = 1
                    VERIFJOB = 0
                End If
            LIG3 = LIG3 + 1
    
    Else
           If ws.Cells(I, 1) = "Article" Then
                ws2.Cells(LIG3, 2) = ws.Cells(I + 1, 1)   'ecrit le no mrp et
                ws2.Cells(LIG3, 3) = ws.Cells(I + 1, 3)   'Planifié
                ws2.Cells(LIG3, 4) = ws.Cells(I + 1, 4)   'sortie
                ws2.Cells(LIG3, 5) = ws.Cells(I + 1, 5)   'equart
                ws2.Cells(LIG3, 9) = 0
                If VERIFJOB = 1 And ws2.Cells(LIG3, 4) <> 0 Then ws2.Cells(LIG3, 9) = 1
                If VERIFJOB = 0 And ws2.Cells(LIG3, 5) <> 0 Then ws2.Cells(LIG3, 9) = 1
                NoMrp = ws2.Cells(LIG3, 2).Value   ' exemple 113-456-789
                Set trouve = Fu.Find(NoMrp, LookIn:=xlValues)
                    If Not trouve Is Nothing Then
                        ws2.Rows(LIG3).Interior.ColorIndex = 2
                    Else
                        ws2.Rows(LIG3).Interior.ColorIndex = 6
                    End If
                LIG3 = LIG3 + 1
          End If
    End If
Next

J'aimerait savoir est-ce que ma définition de ma variable fu est t'elle correcte
Et pourquoi mon Set trouve ne fonctionne pas.
dans le find recherche t'il dans toute les données dans mon tableau
:) merci encore d'avance
 

Cousinhub

XLDnaute Barbatruc
Re : recherche dans variable tableau

Bonsoir,
ce qui me gêne dans ton code, c'est la fermeture de ton fichier fu.xls...
J'ai fait des essais, et même en le mettant en Public, la référence n'est plus valable...
Il vaudrait peut-être mieux faire des essais sans le fermer....
A moins que je ne me trompe....
 

kevenpom

XLDnaute Junior
Re : recherche dans variable tableau

Rebonjour comment allez-vous

j'ai essayer sans le close sa ne marche toujours pas.
J'ai déja employer ce code en ubound mais la ses comme il ne prend pas mmon fu comme un tableau

Une idée ...

Merci encore
 

kevenpom

XLDnaute Junior
Re : recherche dans variable tableau

Bonjours forum
bonjour tout le monde comment allez vous

Dois-je faire une boucle ubound de mon fu pour trouver ma valeur NoMrp
parceque je n'y arrive toujours pas.
question
comment faire une recherche pour savoir si un mot est présent dans ma variable fu (tableau virtuel) pensait que avec un find sa pourait marcher



merci encore de prendre le temp de m'aider...
 

ChTi160

XLDnaute Barbatruc
Re : recherche dans variable tableau

Salut kevenpom
Bonjour le fil
Bonjour le Forum

pour répondre à ta demande
Oui il te faut dans ce cas ,faire une boucle sur ton tabeau Fu
car dans ta procédure ,tu as récupéré dans ce tableau temporaire, les valeurs de la plage de cellules,tu ne peux donc pas utiliser la méthode Find, qui s'applique à une plage de Cellules (Ws.Range("A1:B10").Find(x))
donc il te faut faire une boucle sur la colonne de ton Tableau soit
Code:
Dim Ligne as integer
Sub Test()
 For Ligne=1 to Ubound(Fu,1)
  If Fu(Ligne,1)=Valeurcherche then Msgbox "Coucou"
Next
End Sub

En espérant t'avoir aider à comprendre
Bonne fin de journée
 

kevenpom

XLDnaute Junior
Re : recherche dans variable tableau

bonjours forum
boujours tout le monde
Merci beaucoup pour ton code moi j'utilisait
Code:
I = 1
 For Each c In ws2.Range("B1:B" & .Range("B65536").End(xlUp).Row).SpecialCells(xlCellTypeConstants, 23)
   If ws3.Range("A1:A" & .Range("A65536").End(xlUp).Row).Find(c, LookAt:=xlWhole) Is Nothing Then
        ws2.Rows(c.Row).Interior.ColorIndex = 2        'pieces verte
        I = I + 1
        ws4.Cells(I, 2) = c.Address
        ws4.Cells(I, 1) = c
   Else
        ws2.Rows(c.Row).Interior.ColorIndex = 6      'FU jaune SANS FU
        If ws2.Cells(c.Row, 4) <> 0 Then
            ws2.Cells(c.Row, 9) = 0          'DÉCIDER DE SI FU PRIS EN CONSIDÉRATION
        Else
            ws2.Cells(c.Row, 9) = 0
        End If
   End If
Next
le tien
Code:
Dim Ligne as integer
Sub Test()
 For Ligne=1 to Ubound(Fu,1)
  If Fu(Ligne,1)=Valeurcherche then Msgbox "Coucou"
Next
End Sub


parce que jai 6000 ligne dans mon tableau fu virtuelle
pis environ 40000 dans ma feuille ws2 ubound est très lent comparativement a le code que jai.
Je croyait que de stocker mes données dans une variable plutot que de les recopier et les traités dans mon classeur serait moins long...
Enfin si il y en a qui ont déja eu ce problème merci d'avance....
Merci encore et bonne journée:)
 

Statistiques des forums

Discussions
312 247
Messages
2 086 591
Membres
103 248
dernier inscrit
Happycat