Problème avec "If Not isFileOpen(valeur) Then"

Hugues85 -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -

Bonjour,

mon problème : j'ai un message "erreur de compilation" sub ou function ne définie. 

l'idée est de la macro en vba :

à partir d'une macro en VBA, copier la première ligne d'une feuille Excel et la coller dans un nouveau classeur. ensuite, rechercher dans le fichier initial les lignes dont le contenu de la premières cellule sont identiques, les coller dans le deuxième fichier à la suite de la 1ère ligne. Ne pas supprimer les doublons. Créer un nouveau fichier à chaque nouveauté et l'enregistrer avec le nom contenu dans la cellule A2.

merci pour votre aide


Windows / Chrome 110.0.0.0

4 réponses

  1. Hugues85
     

     bonjour

    je n'ai pas trouvé vba pour coller la macro

    désolé 

    le problème est au niveau de cette ligne :

    'vérifier si le fichier a déjà été créé pour cette valeur
    If Not isFileOpen(valeur) Then 

    Sub copiercoller()
    
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim wb2 As Workbook
    Dim ws2 As Worksheet
    Dim nom As String
    Dim i As Long
    Dim j As Long
    
    
    'ouvrir le classeur actif
    Set wb = ActiveWorkbook
    
    'ouvrir la première feuille
    Set ws = wb.Sheets(1)
    
    'copier la première ligne
    ws.Rows(1).Copy
    
    'créer un nouveau classeur
    Set wb2 = Workbooks.Add
    
    'ouvrir la première feuille
    Set ws2 = wb2.Sheets(1)
    
    'coller la première ligne
    ws2.Range("A1").PasteSpecial xlPasteAll
    
    'trouver le dernier numéro de ligne de la première feuille
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    'parcourir chaque ligne de la première feuille
    For i = 2 To lastRow
    
    'récupérer la valeur de la première cellule de la ligne
    valeur = ws.Cells(i, 1).Value
    
    'vérifier si le fichier a déjà été créé pour cette valeur
    If Not isFileOpen(valeur) Then
    
        'créer un nouveau classeur avec le nom de la valeur
        nom = ws.Cells(i, 2).Value
        Set wb2 = Workbooks.Add
        Set ws2 = wb2.Sheets(1)
        
        'coller la première ligne
        ws.Rows(1).Copy
        ws2.Range("A1").PasteSpecial xlPasteAll
        
        'sauvegarder le fichier
        wb2.SaveAs nom
        
        'fermer le fichier
        wb2.Close
    End If
    
    'ouvrir le fichier correspondant à la valeur
    Set wb2 = Workbooks.Open(ws.Cells(i, 2).Value)
    Set ws2 = wb2.Sheets(1)
    
    'trouver la dernière ligne
    lastrow2 = ws2.Cells(ws2.Rows.Count, 1).End(xlUp).Row
    
    'coller la ligne à la suite
    ws.Rows(i).Copy
    ws2.Range("A" & lastrow2 + 1).PasteSpecial xlPasteAll
    
    'fermer le fichier
    wb2.Close
    Next i
    
    End Sub
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      VBA, c'est du Basic.

      Où est le code de la fonction isFileOpen()?  Le message d'erreur t'indique que tu as négligé de déclarer cete fonction.

      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      D'où vient ce code?

      S'il s'agit vraiment de vérifier si un fichier existe, pourquoi utiliser une fonction appelée isFileOpen?

      0
  2. Hugues85
     

    je la déclare sous quelle caractéristique  au début de la macro ?

    dim ???

    merci pour ton aide

    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      Tu dois déclarer la fonction, et inclure tout son code.

      0