[VB.Excel] incrémenter, copier et coller le résulta

Résolu
ProMed1 Messages postés 33 Statut Membre -  
ProMed1 Messages postés 33 Statut Membre -
Bonjour à tous,

j'ai un fichier <Classeur1.xlsm>, mon but est de parcourir tous les fichiers (.xlsx) de mon dossier qui se trouve quelque part sur mon PC.

la macro va faire les actions suivantes (la description suivante concerne par exemple la ligne 2 et 10) :

1- en boucle sur la plage "B10:B15" pour vérifier si la chaîne de texte commence par M ou T
2- si oui F1=OK, G1=A10, H1= OK ou NOK, I1=D10, J1=C10
3- en boucle sur la plage "A2:A5" pour vérifier si B10=A2
4- si oui K1=E2 et L1=OK

5-si non, sur la plage "B10:B15" la chaîne de texte ne commence par M ou T
6-F1=OK, G1=A10 et L1=NOK

7-copier le résultat "F1:L1" sur mon classeur (.xlsm)

8-même procédure pour les autres lignes (incrémentation du résultat); a ce stade j’arrive pas à le faire par le code VB.

ci-dessous la capture d'un exemple de fichier (.xlsx), du résultât souhaité et du code VB.

pour le résultât de mon code VB, la valeur du K1 doit être 10 et L1 doit être OK, je ne sais pas pourquoi le résultât égal à NOK sur K1 et L1. !!!

merci d'avance pour vos aides.

3 réponses

  1. ProMed1 Messages postés 33 Statut Membre
     
    Option Explicit
    Dim NomClasseur As String
    Dim MonChemin As String
    Dim WB As Workbook
    Dim x As Long
    Dim y As Long
    Dim lig1 As Long, lig2 As Long
    Dim Val1 As String
    Dim Val2 As String
    Dim DernierLigne As Integer
    
    
    Sub Consolider()
    
    
    MonChemin = InputBox("Merci de coller le chemin de vos fichiers sur la zone de texte: ") & "\"
    NomClasseur = Dir(MonChemin & "\*.xlsx*")
    
    Do While NomClasseur <> ""
    
    Application.DisplayAlerts = False
    
        Set WB = Workbooks.Open(MonChemin & NomClasseur)
        WB.Activate
        
        For lig1 = 10 To 15 'boucle sur la plage "B10:B15"
        x = 0
        
            If InStr(1, Cells(lig1, 2), "M") = 1 Or InStr(1, Cells(lig1, 2), "T") = 1 Then 'si la chaine de texte commence par M ou T
    
            Range("F1").Value = "OK" 'F1= OK, F2 = OK, F3 = OK ... tant que Cells(lig1, 2)= M ou T
            
            Range("G1").Value = Range("A10").Value 'G1= OK, G2 = OK, G3 = OK ... tant que Cells(lig1, 2)= M ou T
            
            Val1 = Cells(lig1, 4).Value
            
             If IsNumeric(Val1) Then 'verifier si la Cells(lig1, 4) est numerique
                Range("H1").Value = "OK" 'si oui H1= OK, H2 = OK, H3 = OK ... tant que Cells(lig1, 2)= M ou T + Cells(lig1, 4) est numerique
             Else
                Range("H1").Value = "NOK" 'si non H1= NOK, H2 = NOK, H3 = NOK ... tant que Cells(lig1, 2)= M ou T + Cells(lig1, 4) est non numerique
             End If
            
            Range("I1").Value = Cells(lig1, 4).Value 'I1, I2, I3... = Cells(lig1, 4).Value tant que Cells(lig1, 2)= M ou T
            
            Range("J1").Value = Cells(lig1, 3) 'J1, J2, J3... = Cells(lig1, 3).Value tant que Cells(lig1, 2)= M ou T
               
            Val2 = Cells(lig1, 2).Value
            
                For lig2 = 2 To 5 'boucle sur la plage "A2:A5"
                y = 0
                    If Cells(lig2, 1).Value = Val2 Then 'verifier si la Cells(lig2, 1)= à Val2
                    
                    Range("K1").Value = Cells(lig2, 5).Value 'si oui K1, K2, K3... =Cells(lig2, 5) tant que Cells(lig1, 2)= Val2
                    Else
                    Range("K1").Value = "NOK" 'si non J1, J2, J3... =Cells(lig2, 5) tant que Cells(lig1, 2)= NOK
                    End If
                
                Next lig2
    
            
            Else
                
            Range("F1").Value = "OK" 'F1= OK, si la chaine de texte ne commence pas par M ou T
            Range("G1").Value = Range("A10").Value 'G1= A10, si la chaine de texte ne commence pas par M ou T
            Range("L1").Value = "NOK" 'L1= NOK, si la chaine de texte ne commence pas par M ou T
                
        x = x + 1
    
            End If
            
        Next lig1
    
        Range("F1:L1").Copy
        Workbooks("Classeur1.xlsm").Activate
        DernierLigne = ActiveSheet.UsedRange.Rows.Count + 1
        Range("A" & DernierLigne).Select
        ActiveSheet.Paste
        Workbooks(NomClasseur).Close
    
        
    Application.DisplayAlerts = True
        
        
        NomClasseur = Dir
        
    
        
    Loop
    
       MsgBox "Le traitement est terminer."
       
    End Sub
    
    
    0
    1. ProMed1 Messages postés 33 Statut Membre
       
      fichier (.xlsx)
      0
    2. ProMed1 Messages postés 33 Statut Membre
       
      résultât souhaiter
      0
  2. ProMed1 Messages postés 33 Statut Membre
     
    merci beaucoup :)
    0
  3. ProMed1 Messages postés 33 Statut Membre
     
    Problème résolu, je tiens à remercier "f894009" trait fort.
    0