Comparaison d edeux fichiers, formatage

Comparaison d edeux fichiers, formatage - VB/VBA/VBS - Programmation

Marsh Posté le 13-07-2005 à 09:59:56    

Bonjour à tous,  
 
   je suis novice en VBA, et c'est le seul langage à ma disposition..
Voilà ma problématique :
   J'ai un fichier F1 qui renferme beaucoup d'informations relatives à des serveurs (unh eligne par serveur, chaque champ correspond à une caractéristique : nom du serveur, type d'OS sur ce serveur, appli qu'il héberge etc...).
  J'ai un fichier F2 ("Feuil1" ) qui n'est composé que d'un champ correspondant à une liste de serveurs.
  Ni F1, ni F2 ne sont triés.
 
  Mon but serait de checker la liste de F2 afin de ne faire ressortir que la liste des serveurs de F2 qui sont dans F1 plus quelques caractéristiques choisies.  
Je souhaite que cette liste soit printée dans la "Feuil2" de F2.
 
  Voici mon programme :
 
 
Dim lastLine1%, lastLine2%, F1$, F2$, serv$, pos%, serveur$
    Dim nomServ$, numMax%, numMin%, argh%, numMaxStr$
    Dim taille As Integer
    Dim F1 As Excel.Workbook
    Dim F2 As Excel.Workbook
    Dim Feuil1 As Excel.Worksheet
    Dim Feuil2 As Excel.Worksheet
    Application.ScreenUpdating = False
    F1 = "XXX.xls"
    F2 = "YYY.xls"
    Workbooks.Open FileName:=F1
     
    lastLine1 = Worksheets("Feuil1" ).Cells(65535, 1).End(xlUp).Row
    Dim tabServ(500) As String
    Dim appli(500) As String
    Index = 1
    For Line = 2 To lastLine1
        serv = Trim(LCase$(Worksheets("Feuil1" ).Cells(Line, 5).Value))
        pos = InStr(serv, " " ) - 1
 
        'Formatage pour traiter des cas spéciaux du fichier F1
        If pos <> -1 Then
            serveur = Mid(serv, 1, pos)
            numMax = Mid(serv, pos + 4, Len(serv))
            numMaxStr = numMax & x
            taille = Len(numMaxStr)
            numMin = Mid(serv, pos - taille, taille + 1)
            nomServ = Mid(serv, 1, pos - taille)
            For i = numMin To numMax
                serveur = nomServ & i
                tabServ(Index) = serveur
                appli(Index) = Trim(LCase$(Worksheets("Feuil1" ).Cells(Line, 7).Value))
            Next i
        ' Fin du formatage pour cas spéciaux
 
        Else
            tabServ(Index) = serv
            appli(Index) = Trim(LCase$(Worksheets("Feuil1" ).Cells(Line, 7).Value))
            Index = Index + 1
        End If
    Next Line
     
    Workbooks.Open FileName:=F2
    Workbooks(F2).Worksheets("Feuil1" ).Activate
    lastLine2 = Worksheets("Feuil1" ).Cells(65535, 1).End(xlUp).Row
    MsgBox "lastLine2 = " & lastLine2
    Open Workbooks(F2).Worksheets("Feuil2" ) For Output As #1
    Print #1, "Serveurs"; "Application"
     
    i = 1
    For Line = 1 To lastLine2
    flag = False
        servToCheck = Trim(LCase$(Worksheets(F2).Cells(Line, 1).Value))
        MsgBox "servToCheck = " & servToCheck
        Do While (i <= Index) Or (flag = False)
           If tabServ(i) = servToCheck Then
               flag = True
               Print #1, servToCheck; appli(Index)
               MsgBox "servToCheck = " & servToCheck & "et appli = " & appli(Index)
           End If
        Loop
    Next Line
    End
     
End Sub
 
 
 
  J'ai évidemment enlevé les MsgBox et autres..
  Mon programme fonctionne bien jusqu'à la première partie, ensuite quand j'ouvre le fichier F2 : RIEN NE SE PASSE : pas de print "serveurs applicaton", pas de MsgBox qui apparait :
LE NEANT !!
 
  Je pense que je maîtrise mal les .activate ou select, je ne vois pas ce que cela pourrait être d'autre, toutefois j'ai bien un message me demandant si je veux rouvrir F2...
 
  Je reste perplexe..   :pfff:  
 
  Pourriez-vous m'aider ?  
 
  Merci beaucoup

Reply

Marsh Posté le 13-07-2005 à 09:59:56   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed