IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Copie feuille d'un autre classeur: Bug


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Mars 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2019
    Messages : 31
    Par défaut Copie feuille d'un autre classeur: Bug
    Bonjour à tous,

    Je viens à vous avec une petite problématique que je ne vois pas comment résoudre.
    Pour info je suis plutôt en mode ''newbie'' en terme de programmation VBA.
    Je vous expose le problème.
    J'ai un classeur A qui me sert de fichier de transition pour réaliser des analyses de ventes.
    J'ai un second classeur B qui représente les données d'entrées mensuelles (une feuille par semaine d'activités, soit 4 à 5 feuilles en fonction des mois).
    Dans mon classeur A, j'ai mis en place un bouton qui me permet d'importer les feuilles du classeur B vers le A.
    Ci-dessous le code que j'ai réussi à trouver qui me permet de réaliser cette opération.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Private Sub BOUT001_Click()
    'IMPORTER DONNEES
     Dim i As Integer
     Dim nom As String
     Dim Nomdececlasseur As String
     Dim Nomcopie As String
     Dim chemin As Variant
     Application.DisplayAlerts = False
      chemin = Application.GetOpenFilename("Classeurs Excel (*.xls), *.xls")
       Workbooks.Open (chemin)
    'classeur à copier
     Nomcopie = ActiveWorkbook.Name
     'on parcourt toutes les feuilles
     For i = 1 To Worksheets.Count
     Workbooks(Nomcopie).Activate
     'classeur à copier a adapter le nom
    nom = Worksheets(i).Name
    Nomdececlasseur = ThisWorkbook.Name
    Sheets(nom).Select
     Sheets(nom).Copy After:=Workbooks(Nomdececlasseur).Sheets(1) 'classeur à coller a adapter le nom
    Sheets(nom).Move After:=Sheets(Sheets.Count) 'on met les onglets dans l'ordre
    Next
    Workbooks(Nomdececlasseur).Sheets(1).Activate
    Application.DisplayAlerts = True
    End Sub

    Cela fonctionne très bien. C'est à dire que le pop-up pour sélectionner le fichier s'ouvre, et je peux rechercher le fichier via l'explorer. Si je sélectionne le fichier, tout se passe bien. Les feuilles du classeur B vers le A se copie nickel. Mais si dans le pop-up je fais annuler, j'ai un bug qui apparaît, normal me dirait vous.

    Que puis-je rajouter dans le code pour éviter le bug si je fais annuler ?

    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à toi, Bonjour au Forum,

    Teste la valeur False à chemin.

    Ton code pourrait par ailleurs être épuré. (Nom alloué inopportunément...)

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Mars 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2019
    Messages : 31
    Par défaut
    Merci Marcel pour ta réponse rapide.

    Mais désolé, quand je dis que je suis newbie, c'est pas des conneries.

    Qu'entends tu par : Teste la valeur False à chemin

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,
    Mais désolé, quand je dis que je suis newbie, c'est pas des conneries.
    Pas grave.
    Débranché que je suis, je na savais pas ce que signifie le terme
    newbie
    Le reste, je le sais.

    Pour répondre à ta question,
    Tu vérifies (If) si la variable affectée à GetOpen est fausse.
    Si c'est le cas, la procédure s'arrêtera; autrement dit, tu sortiras de la procédure.

    Pourrais-tu traduire cette indication (éventuellement en recherchant) et revenir avec le code.

    A tout à l'heure.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Mars 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2019
    Messages : 31
    Par défaut
    Merci Marcel,

    J'ai réussi à trouver comment programmer ça !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Private Sub BOUT001_Click()
    'IMPORTER DONNEES
    On Error Resume Next
     Dim i As Integer
     Dim nom As String
     Dim Nomdececlasseur As String
     Dim Nomcopie As String
     Dim chemin As Variant
     Application.DisplayAlerts = False
      chemin = Application.GetOpenFilename("Classeurs Excel (*.xls), *.xls")
    If chemin = False Then
    Exit Sub
    End If
       Workbooks.Open (chemin)
    'classeur à copier
     Nomcopie = ActiveWorkbook.Name
     'on parcourt toutes les feuilles
     For i = 1 To Worksheets.Count
     Workbooks(Nomcopie).Activate
     'classeur à copier a adapter le nom
    nom = Worksheets(i).Name
    Nomdececlasseur = ThisWorkbook.Name
    Sheets(nom).Select
     Sheets(nom).Copy After:=Workbooks(Nomdececlasseur).Sheets(1) 'classeur à coller a adapter le nom
    Sheets(nom).Move After:=Sheets(Sheets.Count) 'on met les onglets dans l'ordre
    Next
    Workbooks(Nomdececlasseur).Sheets(1).Activate
    Application.DisplayAlerts = True
    End Sub

    Merci pour la voie à suivre !

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Mars 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2019
    Messages : 31
    Par défaut
    Maintenant je voudrais au niveau de cette manip réaliser un dernier ajustement.
    Je souhaite que le classeur des données (autrement dit le classeur B) soit fermé automatiquement et sans sauvegarde, une fois les feuille copier, mais il faut que ce soit seulement le fichier données qui soit fermé sans sauvegarde. Si un autre classeur Excel venait à être ouvert en même temps, il ne faudrait pas que cela en ferme d'autre.
    Un avis sur cette fonction au regard du code déjà générer ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/04/2014, 23h18
  2. [XL-2003] Macro : copie de feuilles dans un autre classeur : problèmes graphs + divers
    Par gandalf20000000 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/10/2009, 10h52
  3. Copie d'une feuille vers un autre classeur
    Par zeralium dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/10/2008, 16h08
  4. Réponses: 2
    Dernier message: 26/08/2008, 20h55
  5. Réponses: 2
    Dernier message: 15/02/2008, 09h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo