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 :

amélioration de code [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 26
    Par défaut amélioration de code
    Bonjour a tous , je vous écris une nouvelle fois , afin d'essayer d'améliorer un code existant et qui fonctionne.

    Le code est le suivant :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    Private Sub CommandButton1_Click()
     
     
           ChDir "C:\testmathieu"
        Workbooks.Open Filename:="C:\testmathieu\test.xls"
       If ComboBox1.Text = "CCAS.XLS" Then
     
        Windows("CCAS").Activate
        Sheets("Bulletins de paye").Select
        Sheets("Bulletins de paye").Copy Before:=Workbooks("test.xls").Sheets(1)
     
        If ComboBox2.Text = "CCAS_nat.XLS" Then
     
    Workbooks.Open Filename:="C:\testmathieu\CCAS_nat.xls"
        Windows("CCAS_nat").Activate
        Sheets("Répartition par nature").Select
        Sheets("Répartition par nature").Copy Before:=Workbooks("test.xls").Sheets(1)
     
     
        If ComboBox3.Text = "ville.XLS" Then
     
     Workbooks.Open Filename:="C:\testmathieu\ville.xls"
        Windows("ville").Activate
        Sheets("Bulletins de paye").Select
        Sheets("Bulletins de paye").Copy Before:=Workbooks("test.xls").Sheets(1)
     
        If ComboBox4.Text = "ville_nat.XLS" Then
     
    Workbooks.Open Filename:="C:\testmathieu\ville_nat.xls"
        Windows("ville_nat").Activate
        Sheets("Répartition par nature").Select
        Sheets("Répartition par nature").Copy Before:=Workbooks("test.xls").Sheets(1)
     
        Application.DisplayAlerts = False
    Workbooks("test.xls").Sheets("Feuil1").Delete
    Workbooks("test.xls").Sheets("Feuil2").Delete
    Workbooks("test.xls").Sheets("Feuil3").Delete
    Application.DisplayAlerts = True
     
        End If
        End If
        End If
        End If
        Windows("CCAS.xls").Visible = False
        Windows("CCAS_nat.xls").Visible = False
        Windows("ville.xls").Visible = False
        Windows("ville_nat.xls").Visible = False
     
        End Sub
     
     
    Private Sub UserForm_Activate()
      Dim I As Integer, Chemin As String, Fichier As String
      Chemin = "C:\testmathieu\*.xls"
      Fichier = Dir(Chemin)
       Do While (Len(Fichier) > 0)
        Me.ComboBox1.AddItem Fichier
        Me.ComboBox2.AddItem Fichier
        Me.ComboBox3.AddItem Fichier
        Me.ComboBox4.AddItem Fichier
        Fichier = Dir()
       Loop
    End Sub
    ce code sert a copier la feuil1 de chaque classeur , au nombre de 4.Lorsque je selectionne les classeurs dans les combobox et que je fais copier , il n'accepte pas que je copie seulement un seul classeur ( j'ai 4 combobox).
    Et comment faire pour ajouter un message d'erreur quand la personne se trompe de sélection dans la combobox ? Car 4 classeurs existe et j'ai définie que classeur 1 = combobox1
    classeur2 = combobox2


    etc ......

    si quelqu'un a compris je l'en remercie de m'apporter une aide , et si besoin j'apporterai des précisions.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut mairiemeudon et le forum
    Pas sûr de tout comprebdre
    Ta macro CommandButton1_Click :
    si la comboBox1 = "CCAS.XLS" tu copies la feuille "Bulletins de paye" dans le fichier que tu viens d'ouvrir => donc le fichier CCAS.XLS est déjà ouvert ?
    Lorsque je selectionne les classeurs dans les combobox et que je fais copier , il n'accepte pas que je copie seulement un seul classeur ( j'ai 4 combobox).
    Et c'est bien ou pas ?
    Tout ce qui est évident pour un utilisateur du fichier nous passe au-dessus de la tête, à moins que ce ne soit expliqué, comme si on ne savait rien .
    Et comment faire pour ajouter un message d'erreur quand la personne se trompe de sélection dans la combobox ?
    Je comprends pas le principe : une combobox qui ne contient qu'un seul item ? Pourquoi ne pas faire 4 TextBox avec 4 boutons de validation + 1 bouton pour valider les 4 d'une seule fois ? Enfin, chacun son idée.

    Là, comme est construite ta macro, si la troisième comboBox ne contient pas la bonne donnée, les deux premières seront déjà effectuées avant que ça ne s'arrête.

    Si tu veux oblgatoirement les 4, il vaut mieux tester avant de copier et comme tes combos ne comportent qu'une donnée, il suffit de vérifier qu'elle ne soit pas vide, sinon mettre un message d'erreur et sortir. Si les 4 sont bonnes, copier directement.

    Si tu veux ne pouvoir ouvrir que 1, 2, 3 ou les 4, il ne faut pas imbriquer les If :
    If CB1="A" then
    ouvrir A et le copier
    Else
    Message avertissant que A ne sera pas copié
    Endif
    If CB2="B" then
    ouvrir B et le copier
    Else
    Message avertissant que B ne sera pas copié
    Endif
    If CB3="C" then .... etc.

    S'il te faut obligatoirement les 4 :
    if CB1<>"A" then
    Message
    exit sub
    endif
    ....
    If CB4<>"D" then
    Message
    exit sub
    endif
    Ouvrir et copier les 4.
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 26
    Par défaut
    Merci de ta réponse rapide , je vais precisé quelque points :

    si la comboBox1 = "CCAS.XLS" tu copies la feuille "Bulletins de paye" dans le fichier que tu viens d'ouvrir => donc le fichier CCAS.XLS est déjà ouvert
    , oui le fichier CCAS.xls est ouvert.

    Je comprends pas le principe : une combobox qui ne contient qu'un seul item ? Pourquoi ne pas faire 4 TextBox avec 4 boutons de validation + 1 bouton pour valider les 4 d'une seule fois ? Enfin, chacun son idée.
    Ma combobox contient tous les fichier en .xls contenue dans
    Chemin = "C:\testmathieu\*.xls"
    ils sont au nombre de 4.

    je veux que quand je choisis un seul fichier dans une des 4 combobox , il ne me mette pas une erreur , qui par ailleurs se trouve ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Windows("CCAS_nat.xls").Visible = False

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut mairiemeudon et le forum
    Ma combobox contient tous les fichier en .xls contenue dans
    Avec ta macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub UserForm_Activate()
    ce n'est pas ce que je lis : pour moi, chaque combo ne reçoit qu'un unique item
    je veux que quand je choisis un seul fichier dans une des 4 combobox , il ne me mette pas une erreur
    Donc, une combo ne peut avoir que 2 possibilités :vide ou le fichier (ou un item de la liste). Ça, c'est déjà géré au niveau des propriétés de la comboBox, en mettant MatchRequired à True.
    A+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 26
    Par défaut
    Bon je me suis mal exprimé , je vais essayer de rectifier cela.

    j'ai 4 combobox , je veux quand je sélectionne un item dans une des 4 et laisse les 3 autres vierge la copie marche tout simplement.
    la copie marche quand je remplie les 4 combobox , je ne vois pas pourquoi il me met une erreur lorsque je veux en copier qu'un seul.
    et l'erreur est toujours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       Windows("CCAS.xls").Visible = False
        Windows("CCAS_nat.xls").Visible = False
        Windows("ville.xls").Visible = False
        Windows("ville_nat.xls").Visible = False
    sur la deuxiéme ligne , et cela peu importe l'ordre.
    j'ai essayé comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Windows("CCAS.xls").Visible = False
        Windows("ville.xls").Visible = False
        Windows("CCAS_nat.xls").Visible = False
        Windows("ville_nat.xls").Visible = False
    mais c'est toujours la deuxiéme ligne qui plante

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Amélioration de code
    Par Devilju69 dans le forum Langage
    Réponses: 3
    Dernier message: 07/10/2008, 15h01
  2. Optimisations et Améliorations de code
    Par womannosky dans le forum Langage
    Réponses: 19
    Dernier message: 02/07/2008, 15h05
  3. [Optimisation]Peut-on améliorer ce code ?
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 09/08/2007, 15h43
  4. [Tableaux] Amélioration de code (if)
    Par Sir Tengu dans le forum Langage
    Réponses: 3
    Dernier message: 24/12/2006, 00h26
  5. [Sécurité] Comment amélioré mon code ?
    Par Nadd dans le forum Langage
    Réponses: 14
    Dernier message: 03/03/2006, 20h13

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