Vba transférer vers un autre classeur avec condition

Résolu
noe2008 Messages postés 191 Statut Membre -  
noe2008 Messages postés 191 Statut Membre -
Bonjour les amis,
J'ai une macro pour but de transférer les données d'un classeur source vers un classeur cible, la macro s'exécute sans problème mais j'ai voulu ajouter une condition pour que les données se transfèrent si et seulement si les deux marges de cellules C10:C100 des deux classeurs contiennent exactement les mêmes données , mais la macro s’arrête au niveau de la 11éme
Merci d'avance.
Sub Exporter()
Application.ScreenUpdating = False
Dim Fich As String
Dim CD, ar, el as range
Fich = Application.GetOpenFilename
Sheets("tut1").Activate
CD = ActiveSheet.Range("F10:AD100")
ar = ActiveSheet.Range("C10:C100")
Workbooks.Open (Fich)
Sheets("Tuteur").Activate
el = ActiveSheet.Range("C10:C100")
If ar <> el Then
MsgBox "Ce n'est pas le bon fichier !"
ActiveWorkbook.Close SaveChanges:=False
Else
Range("F10:AD100") = CD
ActiveWorkbook.Close SaveChanges:=True
End If
End Sub


Configuration: Windows / Chrome 100.0.4896.88

7 réponses

  1. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Une proposition à adapter selon vos besoins:
    Sub test()
    Dim ar As Variant, el As Variant
    ar = ActiveSheet.Range("A10:A100")
    el = ActiveSheet.Range("C10:C100")
    For c = 1 To UBound(ar)
        If ar(c, 1) <> el(c, 1) Then
            MsgBox "Ce n'est pas le bon fichier !"
            rep = noOk
            Exit For
        End If
    Next c
    If re = "noOK" Then
        ActiveWorkbook.Close SaveChanges:=False
    Else
        Range("F10:AD100") = ar
        ActiveWorkbook.Close SaveChanges:=True
    End If
    End Sub

    1
    1. noe2008 Messages postés 191 Statut Membre 4
       
      Merci infiniment ça marche
      0
  2. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Vous avez défini la variable [el] comme [Range] et de ce fait votre ligne 11 doit être:
    Set el = ActiveSheet.Range("C10:C100")

    0
  3. noe2008 Messages postés 191 Statut Membre 4
     
    Salut Le pingou je viens d'ajouter votre modification mais la macro s'arrete au niveau de la 12 eme ligne : If ar <> el Then
    0
  4. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Et que vous dit le message d'erreur....?
    C'est normal car vous comparez 2 variables dont [ar] est de type Variant et [el] de type Range.

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. noe2008 Messages postés 191 Statut Membre 4
     
    bonjour,
    le message de debogage
    erreur d'execution
    incompatibilité de type
    0
  7. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Le voici exactement:


    Je vois que vous voulez comparer deux plages de données, alors il faut faire une boucle sur les données pour les comparer une à une.....
    0
  8. noe2008 Messages postés 191 Statut Membre 4
     
    bonjour,
    mes connaissances sont limitées en vba , si vous pouvez me régler ce problème je serai tres reconnaissant.
    0