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 :

Problème macro qui rame


Sujet :

Macros et VBA Excel

  1. #1
    Invité
    Invité(e)
    Par défaut Problème macro qui rame
    Bonjour à tous,

    J'ai un souci avec le fichier Excel joint.
    C'est un fichier avec des actions et des responsables d'action.Chaque responsable se choisit lors de l'ouverture du fichier afin de ne visualiser que ses actions.

    Le souci que je rencontre est le suivant:

    -Lorsque qu'une personne ouvre le fichier et sélectionne son prénom le fichier plante.

    Savez-vous pourquoi ça plante!!!

    Merci pour votre aide!

    Marion

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    Bonjour,

    De nombreuses personnes n'ouvrent pas les fichiers joints,

    Pourrais-tu nous donner le code que tu utilises ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Voici le code que j'utilise

    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
     
     
    Dans ThisWorkbook:
     
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
     
        Dim xOutApp As Object
        Dim oItem As Object
        Dim olMail As Object 'défini outlook en object
        Const olMailItem As Long = 0 'permet la déclaration tardive des référence outlook (évite les erreurs de versions excel)
     
        On Error Resume Next
        Set xOutApp = CreateObject("Outlook.Application")
        Set oItem = xOutApp.CreateItem(olMailItem)
     
                Set olMail = xOutApp.CreateItem(olMailItem)
                With olMail
                    .To = "marion.audy@hine.com"
                    .Subject = "Le suivi des actions a été modifié"
                    .Body = "" _
     
     
                    .Send
                End With
     
     
        Set olMail = Nothing
        Set xOutApp = Nothing
        Application.ScreenUpdating = True
     
     
    Range("Tableau5").EntireColumn.Hidden = False 'afficher toutes le colonnes
     
    End Sub
     
    Private Sub Workbook_Open()
     
    UserForm1.Show
     
    End Sub
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
     
     
    Dans Userform1: 
     
    Private Sub CommandButton1_Click()
     
    With Sheets("suivi des actions").Select
     
     
    ActiveSheet.ListObjects("Tableau5").Range.AutoFilter Field:=13, Criteria1:= _
            "=*CODIR*", Operator:=xlAnd 'Trier la 14ème colonne sur contient CODIR
     
    Range("A_masquer").EntireColumn.Hidden = True 'cacher les colonnes A_masquer (nom selection)
     
    ActiveSheet.ListObjects("Tableau5").Range.AutoFilter Field:=1, Criteria1:= _
            RGB(255, 255, 255), Operator:=xlFilterNoFill 'filtre la première colonne avec aucun remplissage
     End With
     
     
    Unload UserForm1 'fermer la Userform1
    End Sub
     
     
     
    Private Sub CommandButton2_Click()
     
     
    With Sheets("suivi des actions").Select
     
     
      Range("Tableau5[#All]").AdvancedFilter Action:=xlFilterInPlace, _
           CriteriaRange:=Sheets("Critères").Range("RH"), Unique:=False
     
     
    Range("A_masquer").EntireColumn.Hidden = True
     
     
    End With
     
     
    Unload UserForm1
     
    End Sub
     
    Private Sub CommandButton3_Click()
     
    With Sheets("suivi des actions").Select
     
     
      Range("Tableau5[#All]").AdvancedFilter Action:=xlFilterInPlace, _
            CriteriaRange:=Sheets("Critères").Range("EDV"), Unique:=False
     
    Range("A_masquer").EntireColumn.Hidden = True 'cacher les colonnes A_masquer (nom selection)
     
    End With
     
    Unload UserForm1
     
    End Sub
     
    Private Sub CommandButton4_Click()
     
     
    With Sheets("suivi des actions").Select
     
     
      Range("Tableau5[#All]").AdvancedFilter Action:=xlFilterInPlace, _
            CriteriaRange:=Sheets("Critères").Range("Achats"), Unique:=False
     
     
    Range("A_masquer").EntireColumn.Hidden = True 'cacher les colonnes A_masquer (nom selection)
     
     
     
            End With
     
    Unload UserForm1
     
    End Sub
     
    Private Sub CommandButton5_Click()
     
    With Sheets("suivi des actions").Select
     
      Range("Tableau5[#All]").AdvancedFilter Action:=xlFilterInPlace, _
            CriteriaRange:=Sheets("Critères").Range("Marketing"), Unique:=False
     
     
    Range("A_masquer").EntireColumn.Hidden = True 'cacher les colonnes A_masquer (nom selection)
     
    End With
     
    Unload UserForm1
     
    End Sub
     
    Private Sub CommandButton6_Click()
     
    With Sheets("suivi des actions").Select
     
      Range("Tableau5[#All]").AdvancedFilter Action:=xlFilterInPlace, _
            CriteriaRange:=Sheets("Critères").Range("Commercial"), Unique:=False
     
     
    Range("A_masquer").EntireColumn.Hidden = True 'cacher les colonnes A_masquer (nom selection)
     
    End With
     
    Unload UserForm1
     
    End Sub
     
     
    Private Sub CommandButton8_Click()
     
    With Sheets("suivi des actions").Select
     
      Range("Tableau5[#All]").AdvancedFilter Action:=xlFilterInPlace, _
            CriteriaRange:=Sheets("Critères").Range("Qualité"), Unique:=False
     
     
    Range("A_masquer").EntireColumn.Hidden = True 'cacher les colonnes A_masquer (nom selection)
     
    End With
     
    Unload UserForm1
     
    End Sub
     
    Private Sub CommandButton9_Click()
     
    With Sheets("suivi des actions").Select
     
     ActiveSheet.ShowAllData
     
     Range("A_masquer").EntireColumn.Hidden = False 'afficher les colonne A_masquer (nom selection)
     
     
     
    End With
     
     
    Unload UserForm1
     
    End Sub
     
    Private Sub CommandButton10_Click()
     
     
    UserForm2.Show
     
     
    Unload UserForm1
     
     
    End Sub
    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
     
     
    Dans userform2
     
    Private Sub CommandButton1_Click()
     
     
     
    With Sheets("suivi des actions").Select
     
     
      Range("Tableau5[#All]").AdvancedFilter Action:=xlFilterInPlace, _
           CriteriaRange:=Sheets("Critères").Range("Action"), Unique:=False
     
    Range("A_masquer").EntireColumn.Hidden = False
     
    End With
    Unload UserForm2
    Unload UserForm1
     
     
     
    End Sub
     
    Private Sub CommandButton2_Click()
     
    With Sheets("suivi des actions").Select
     
     Range("Tableau5[#All]").AdvancedFilter Action:=xlFilterInPlace, _
           CriteriaRange:=Sheets("Critères").Range("Non_conformité"), Unique:=False
     
    Range("A_masquer").EntireColumn.Hidden = False
    End With
     
    Unload UserForm2
    Unload UserForm1
     
    End Sub
     
    Private Sub CommandButton3_Click()
     
     
    With Sheets("suivi des actions").Select
     
     
     Range("Tableau5[#All]").AdvancedFilter Action:=xlFilterInPlace, _
           CriteriaRange:=Sheets("Critères").Range("Réclamation_client"), Unique:=False
     
     
    Range("A_masquer").EntireColumn.Hidden = False
     
    End With
     
    Unload UserForm2
    Unload UserForm1
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dans module 1
     
    Sub Bouton1_Cliquer()
    UserForm1.Show
    End Sub
    Merci d'avance,

    Marion

  4. #4
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    A quelle moment exactement le fichier "plante" ?

    Sur le userform1 ? Sur le Userform2 ?

    Est ce qu'un message d'erreur apparaît ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    C'est au moment de la userform1 quand on clic sur un bouton, quelque soit le bouton.

    Il n'y a pas de message qui apparaît , seulement Excel se met à "mouliner" et finit par "planter".

  6. #6
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    C'est étonnant car après avoir testé, lorsqu'on entre dans le fichier l'userform1 s'affiche bien mais une erreur se produit :
    "La méthode range de l'objet _Global a échoué"

    Par contre, si on stop la procédure, et qu'on la relance, tout fonctionne très bien.

  7. #7
    Invité
    Invité(e)
    Par défaut
    C'est bien là mon problème

    Lorsque je le lance sur mon PC, je n'ai pas de soucis mais lorsque mes collègues ouvre le fichier ça ne fonctionne pas une fois sur deux...

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Tu utilise beaucoup de select Activemachin, Range (tout court)

    Pour ne pas se soucier, utilise un adressage complet des range sans aucune Select

    Exemple (moche et risqué)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    worksheet("toto").select
    range("titi").value=1
    range("Tutu").copy
    Pour ne pas se soucier de la feuille active:

    Solution pédagogique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    worksheet("toto").range("titi").value=1
    worksheet("toto").range("tutu").copy
    Solution préconisée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    with worksheet("toto")
          .range("titi").value=1
          .range("tutu").copy
    end with
    Regarde bien les points avant Range

  9. #9
    Invité
    Invité(e)
    Par défaut
    mercatog, j'ai essayé de modifier comme tu me l'a conseillé ce qui donne le code suivant:

    Est-ce que c'est comme ça qu'il faut faire? Si oui, ça "plante" toujours....

    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
    Private Sub CommandButton1_Click()
     
    With Worksheets("suivi des actions")
     
     
    .Range("Tableau5").AutoFilter Field:=13, Criteria1:= _
            "=*CODIR*", Operator:=xlAnd 'Trier la 14ème colonne sur contient CODIR
     
    .Range("A_masquer").EntireColumn.Hidden = True 'cacher les colonnes A_masquer (nom selection)
     
    .Range("tableau5").AutoFilter Field:=1, Criteria1:= _
            RGB(255, 255, 255), Operator:=xlFilterNoFill 'filtre la première colonne avec aucun remplissage
     End With
     
     
    Unload UserForm1 'fermer la Userform1
    End Sub
     
     
     
    Private Sub CommandButton2_Click()
     
     
    With Worksheets("suivi des actions")
     
     
      .Range("Tableau5[#All]").AdvancedFilter Action:=xlFilterInPlace, _
           CriteriaRange:=Sheets("Critères").Range("RH"), Unique:=False
     
     
    .Range("A_masquer").EntireColumn.Hidden = True
     
     
    End With
     
     
    Unload UserForm1
     
    End Sub

  10. #10
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Regarde la portée des noms A_Masquer et RH. (Classeur ou feuille)?

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Toutes les références sont sur le classeur

    Merci beaucoup

  12. #12
    Invité
    Invité(e)
    Par défaut
    J'ai mis les différentes références dans les feuilles correspondantes mais ça plante toujours.

    Est-ce que cela peut avoir un rapport avec les différentes version utilisées? En effet, j'utilise la version 2016 mais la majorité de mes collègues ont une version 2010.

    Merci d'avance,

    Marion

Discussions similaires

  1. [XL-2016] Problème macro qui fonctionne que en pas à pas sous Excel 2016
    Par Gorzyne dans le forum Excel
    Réponses: 3
    Dernier message: 01/02/2018, 11h58
  2. [XL-2010] Problème Macro qui modifie l'échelle d'un graphique
    Par valou_43 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/05/2015, 13h13
  3. [XL-2013] Problème macro qui BOUCLE sans raison
    Par tyndare36 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/11/2014, 14h36
  4. problème : une macro qui crée un tableau
    Par watashi wa dans le forum Mise en forme
    Réponses: 1
    Dernier message: 22/04/2008, 09h22
  5. Problème : internet qui rame
    Par Jacky boy le looser dans le forum Windows XP
    Réponses: 6
    Dernier message: 12/10/2007, 22h51

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