[Résolu] Créer macro importé un .csv dans excel

Créer macro importé un .csv dans excel [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 30-05-2007 à 12:59:02    

Bonjour,
 
J'aurais besoin de créer dans un classeur excel un macro et un boutton permettant d'importer les données contenu dans un fichier .csv . Dans ce .csv il y a 2 colonnes et des centaines voir milliers de lignes. Dans ces colonne (on va dire A et B) je dois supprimer les 2 premiers caractaires (qui seront toujours " M- " ) de la premiére colonne. Ensuite je dois faire un autre boutton pour les comparés (les 2 colonnes doivent être identique pour être accepté)
 
En language je connais que le c++ (est encore c'est légé, 1er année de bts iris  :whistle: ). Donc là je rame comme pas possible. J'ai pas trouvé un code qui corespond a ce que je cherche à faire.
 
Même si vous me donné pas le code exacte, une petite aide serait la bienvenue  :D .
 
Je vous met un petit exemple au cas ou je me suis mal exprimé.
 
Le contenu du .csv

Code :
  1. M-0380028/01;0380028/01


 
Le résultat souhaité en cliquant sur le bouton "import .csv" puis "comparé codes"

Code :
  1. 0380028/01                           0380028/01                      Ok
  2. 0380248/D                            0380244/D                     Mauvais


 
Voilà j'esper que vous allez pouvoir m'aider  :D


Message édité par barca-powa le 30-05-2007 à 16:45:59
Reply

Marsh Posté le 30-05-2007 à 12:59:02   

Reply

Marsh Posté le 30-05-2007 à 13:36:51    

Bonjour :
 
Sub supprcaract()
 
dim A as integer, NbLine as integer
 
with thisworkbook.worksheets(1) 's'il s'agit bien de la Feuil1
  NbLine=.cells(65536,1).end(xlup).column 'si la colonne 1 est concernée
  for A=1 to nbline 'si la première cellule est en ligne 1
    .cells(A,1)=replace(.cells(A,1),"M-" ) 'on remplace les 2 caractères
    'par... rien, pour les supprimer
    if .cells(A,1)=.cells(A,2), then  
      .cells(A,3)="Ok"  
    else
      .cells(A,3)="Mauvais"
    end if
  next A
end with
end sub

Reply

Marsh Posté le 30-05-2007 à 13:38:44    

Correction :
 
Sub supprcaract()
 
dim A as integer, NbLine as integer
 
with thisworkbook.worksheets(1) 's'il s'agit bien de la Feuil1
  NbLine=.cells(65536,1).end(xlup).row 'si la colonne 1 est concernée
  for A=1 to nbline 'si la première cellule est en ligne 1
    .cells(A,1)=replace(.cells(A,1),"M-" ) 'on remplace les 2 caractères
    'par... rien, pour les supprimer
    if .cells(A,1)=.cells(A,2), then  
      .cells(A,3)="Ok"  
    else
      .cells(A,3)="Mauvais"
    end if
  next A
end with
end sub
 
Attention ce code ne fonctionne que si le fichier .csv est déjà ouvert et  se présente sous la forme excel (cad avce des cellules et non pas des séparateurs type "," ou ";" )

Reply

Marsh Posté le 30-05-2007 à 13:39:54    

Correction :
 
Sub supprcaract()
 
dim A as integer, NbLine as integer
 
with thisworkbook.worksheets(1) 's'il s'agit bien de la Feuil1
  NbLine=.cells(65536,1).end(xlup).row 'si la colonne 1 est concernée
  for A=1 to nbline 'si la première cellule est en ligne 1
    .cells(A,1)=replace(.cells(A,1),"M-","" ) 'on remplace les 2 caractères
    'par... rien, pour les supprimer
    if .cells(A,1)=.cells(A,2), then  
      .cells(A,3)="Ok"  
    else
      .cells(A,3)="Mauvais"
    end if
  next A
end with
end sub
 

Reply

Marsh Posté le 30-05-2007 à 13:50:27    

ahah! Merci!
EDIT:
Désolé j'ai pas actualisé et vu tes corectifs. Je test ca merci!


Message édité par barca-powa le 30-05-2007 à 13:51:30
Reply

Marsh Posté le 30-05-2007 à 13:59:30    

Alors il me disait erreur de syntaxe sur cette ligne
 
    If .Cells(A, 1) = .Cells(A, 2), then
 
J'ai cherché un peu (un peu :P) et en mettant ceci ca marche impec
 
    If .Cells(A, 1) = .Cells(A, 2) Then

Reply

Marsh Posté le 30-05-2007 à 14:03:01    

Une autre approche, à adapter


Option Explicit
 
Sub Tst()
Dim Fichier As Variant
    ChDir ThisWorkbook.Path
    Fichier = Application.GetOpenFilename("Text Files (*.csv), *.csv" )
    If Fichier <> False Then
        Lire Fichier
    End If
End Sub
 
Sub Lire(ByVal NomFichier As String)
Dim Chaine As String
Dim Ar() As String
Dim i As Long
Dim iRow As Long, iCol As Long
Dim NumFichier As Integer
Dim Separateur  As String * 1
 
    '  Séparateur Point Virgule
    Separateur = ";"
     
    Cells.Clear
    Application.ScreenUpdating = False
    NumFichier = FreeFile
    iRow = 1
     
    Open NomFichier For Input As #NumFichier
        Do While Not EOF(NumFichier)
            iCol = 1
            Line Input #NumFichier, Chaine
            Ar = Split(Chaine, Separateur)
            For i = LBound(Ar) To UBound(Ar)
                Ar(i) = Replace(Ar(i), "M-", "" )
                Cells(iRow, iCol) = Ar(i)
                iCol = iCol + 1
            Next
             
            Select Case Cells(iRow, 1)
                Case Is = Cells(iRow, 2): Cells(iRow, 3) = "Ok"
                Case Else: Cells(iRow, 3) = "Bad"
            End Select
             
            iRow = iRow + 1
        Loop
    Close #NumFichier
     
    Application.ScreenUpdating = True
End Sub

Message cité 1 fois
Message édité par kiki29 le 30-05-2007 à 14:49:20
Reply

Marsh Posté le 30-05-2007 à 14:12:52    

Merci kiki29. Je modifie un peu le code de aprilthe5ith et je regarde ton code qui visiblement lui est pour inporter le .csv :D

Reply

Marsh Posté le 30-05-2007 à 14:25:45    

Bon coupure de courant dans l'entreprise (...) je reboot j'essay ton code kiki29 et là miracle c'est exactement ca qui me falé! J'aurais juste 2 ou 3 truk a modifier pour les besoins spécifique qu'on aura et ca sera parfais!  
Un grand merci!

Reply

Sujets relatifs:

Leave a Replay

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