Erreur 9

cam75 -  
pilas31 Messages postés 1878 Statut Contributeur -
Bonjour,

Je voudrai ouvrir un fichier excel fermé sur le bureau et déplacer l'onglet de la feuille 1 vers le fichier excel ouvert pour remplacer l'onglet 1 du fichier 1 par celui du fichier fermé

Mon code est le suivant (mais j'ai l'erreur 9 qui apparaît en surlignant la dernière ligne de code)

 Dim continue As String
    If Sheets(1).Name = "CPTES DIANE" Then
    continue = MsgBox(prompt:="ANAFI contient déja un onglet comportant des données importées de DIANE. Voulez-vous continuer et supprimer cet onglet?", Buttons:=vbYesNo, Title:="Attention")
        If continue = vbYes Then
        Sheets(1).Delete
        ElseIf continue = vbNo Then Exit Sub
        End If
    End If
    
    Workbooks.Open (Fichier)
    Workbooks(Fichier).Sheets(1).Move Before:=Workbooks(ANAFI_Name).Sheets(1)
    Workbooks(ANAFI_Name).Sheets(1).Name = "CPTES DIANE"
    Workbooks(Fichier).Close savechanges:=False


Merci par avance pour vos suggestions

Cordialement

Cam

2 réponses

  1. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Bonjour,

    Cette macro est curieuse car il exécute les dernières instructions même si le premier IF donne faux.
    Il me semble plus logique de coder comme cela :
    Dim continue As String
     If Sheets(1).Name = "CPTES DIANE" Then
        continue = MsgBox(prompt:="ANAFI contient déja un onglet comportant des données importées de DIANE. Voulez-vous continuer et supprimer cet onglet?", Buttons:=vbYesNo, Title:="Attention")
        If continue = vbYes Then
            Sheets(1).Delete
            Workbooks.Open (Fichier)
            Workbooks(Fichier).Sheets(1).Move Before:=Workbooks(ANAFI_Name).Sheets(1)
            Workbooks(ANAFI_Name).Sheets(1).Name = "CPTES DIANE"
            Workbooks(Fichier).Close savechanges:=False
        End If
     End If


    A tester
    0
    1. cam75
       
      Merci bcp mais la même erreur apparaît pour la dernière ligne du code..
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > cam75
       
      Bonjour tout le monde,
      Essayez en rendant Workbooks(fichier) actif :

          Workbooks(ANAFI_Name).Sheets(1).Name = "CPTES DIANE"
          Workbooks(Fichier).Activate 'ou .Select, je ne sais plus...
          Workbooks(Fichier).Close savechanges:=False
      0
    3. cam75
       
      Ci dessous le debut de ma macro si jamais

      'I°/Rapatriation des comptes DIANE dans un onglet de ANAFI nommé "DIANE"
      
          '1°/ Localisation du fichier sur le PC
          
          Call MsgBox(prompt:="Veuillez sélectionner le fichier Excel contenant les comptes complets de la société étudiée exportés de DIANE", Buttons:=vbInformation & vbOKOnly, Title:="Bienvenue")
          Dim Emplacement As String
          Emplacement = Application.GetOpenFilename("Fichiers Excel, *.xls")
          If Emplacement = "Faux" Then Exit Sub
          
          '2°/ Récupération du nom du fichier
          
          Dim Fichier As String
          Dim i As Integer
          Dim FichierSansExtension As String
          
          For i = Len(Emplacement) To 1 Step -1
              If Mid(Emplacement, i, 1) = "\" Then Exit For
          Next i
          
          Fichier = Mid(Emplacement, i + 1, Len(Emplacement))
          FichierSansExtension = Mid(Fichier, 1, Len(Fichier) - 4)
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > cam75
       
      As tu essayé ma proposition?
      0
    5. cam75 > pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention  
       
      oui cela ne marche pas, j'ai un message erreur compilation...mais merci pour la suggestion
      0
  2. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Re Bonsoir,

    Il y a une erreur de syntaxe sur le Activate suggéré par pijaku (que je salue au passage).
    Je pense que c'est le Move qui perturbe. Essayer avec ces 4 lignes à la fin avec Copy à la place de Move
    Workbooks.Open (Fichier) 
     Workbooks(Fichier).Sheets(1).Copy Before:=Workbooks(ANAFI_Name).Sheets(1)
     Workbooks(ANAFI_Name).Sheets(1).Name = "CPTES DIANE"
     Workbooks(Fichier).Close savechanges:=False


    Cordialement,
    0
    1. cam75
       
      en effet merci bcp cela marche!

      comme je suis débutant et assez mauvais pour le moment, pourriez vous m'aider à déchiffrer cela:

      Année = "20" & Right(Worksheets(1).Cells(9, i).Value, 2)

      Merci par avance
      0
      1. pilas31 Messages postés 1878 Statut Contributeur 648 > cam75
         
        Cela signifie concaténer (coller) 20 avec les deux caractères les plus à droite de la cellule située ligne 9 et colonne i de la première feuille.
        Par exemple si les deux derniers caractères à droite c'est "15" alors année = "2015"
        0