Erreur 9

cam75 -  
pilas31 Messages postés 1825 Date d'inscription   Statut Contributeur Dernière intervention   -
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

pilas31 Messages postés 1825 Date d'inscription   Statut Contributeur Dernière intervention   646
 
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
cam75
 
Merci bcp mais la même erreur apparaît pour la dernière ligne du code..
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > 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
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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > cam75
 
As tu essayé ma proposition?
0
cam75 > pijaku Messages postés 12263 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
pilas31 Messages postés 1825 Date d'inscription   Statut Contributeur Dernière intervention   646
 
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
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
pilas31 Messages postés 1825 Date d'inscription   Statut Contributeur Dernière intervention   646 > 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