Erreur 9

Fermé
cam75 - Modifié par pijaku le 25/02/2015 à 16:13
pilas31 Messages postés 1823 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 25 févr. 2015 à 23:54
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 1823 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 636
25 févr. 2015 à 16:09
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
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 2 712 > cam75
25 févr. 2015 à 16:27
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
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 2 712 > cam75
25 févr. 2015 à 16:32
As tu essayé ma proposition?
0
cam75 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023
25 févr. 2015 à 16:35
oui cela ne marche pas, j'ai un message erreur compilation...mais merci pour la suggestion
0
pilas31 Messages postés 1823 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 636
Modifié par pilas31 le 25/02/2015 à 17:47
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
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 1823 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 636 > cam75
25 févr. 2015 à 23:54
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