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 :

Bouton (Contrôle de formulaire) influence le résultat de l'exécution de la sub


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 556
    Par défaut Bouton (Contrôle de formulaire) influence le résultat de l'exécution de la sub
    Bonjour a vous,

    J'ai présentement un problème sur une sub auquel j'ai créer un bouton dans la colonne Z afin de facilité sont exécution par les futures utilisateurs. Entre temps, nous avons changé notre façon de faire a l'interne et allons plutôt créé un ruban avec le raccourcis de la macro. Donc je dois enlever (supprimer) le bouton de la feuille en question afin d'uniformiser nos façons de faire.

    Apres supression du bouton, si j'exécute la macro dans le code a l'aide de F5 ou par developpeur/macros, je reçois mon message de mon errorhandler. Si je recrais un bouton (peut importe son nom) dans la colonne Z, que j'affecte la macro et que je réexécute le code, tout fonctionne comme prévu. Si je bouge le bouton dans un autre colonne, j'ai mon message de mon errorhandler qui réapparait.


    J'ai donc déduis qu'il y a une corrélation entre l'emplacement d'un bouton ayant une affectation de macro et le résultat de mon code. Pourtant, je n'ai pas mis de conditon concernant un bouton ou autre.

    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
    Sub genere_onglets_fournisseur()
     
        On Error GoTo errorHandler:
     
        Dim x As Integer
        Dim LettreVoulue As String
        LettreVoulue = TrouveLettreColonne([fournisseur])
        Dim nom_fournisseur As Variant
        Dim entete As Range
        Dim start As Single
        Dim finish As Single
     
     
     
        start = Timer
     
                                Application.ScreenUpdating = False
     
     
    'détruire onglet si ré-exécution de la macro
     
        detruire_onglet
     
    'nettoie le nom des fournisseurs provenant du LAC afin d'éviter d'avoir 2 onglets
     
        Range(LettreVoulue & 2, LettreVoulue & LastLignUsedInSheet("R_MoulinetteAValider")).Select
        nettoyerseul
     
    'création des feuilles selon le nom des fournisseur
     
     
        For Each nom_fournisseur In Feuil1.Range(LettreVoulue & 2, LettreVoulue & LastLignUsedInColumn(LettreVoulue))
     
        x = x + 1
     
        If IsNumeric(nom_fournisseur) = False And IsEmpty(nom_fournisseur) = False Then
     
     
     
     
            If Cells(x + 1, [valider_x].Column) = "x" Or Cells(x + 1, [valider_x].Column) = "X" Then
     
     
     
                    If sheetExists(nom_fournisseur.Value) = True Then
     
     
                    Else
     
                        Sheets.Add.Name = nom_fournisseur
                        Feuil1.[entete].Copy Sheets(nom_fournisseur.Value).Range("a1")
                        ActiveSheet.Shapes.Range(Array("Button 1")).Delete
     
                         Range("q1").Copy Range("q1:t1")
                         Range("r1").Value = "Description du fournisseur"
                         Range("s1").Value = "Reponse du fournisseur"
                         Range("t1").Value = "Lien internet ou catalogue du fournisseur"
                         Columns("a:C").ColumnWidth = 6.11
                         Columns("D").ColumnWidth = 8.33
                         Columns("E").ColumnWidth = 15.78
                         Columns("F").ColumnWidth = 11.89
                         Columns("G").ColumnWidth = 15.78
                         Columns("H").ColumnWidth = 40
                         Columns("I:P").ColumnWidth = 15.78
                         Columns("Q").ColumnWidth = 11.89
                         Columns("R:U").ColumnWidth = 40
     
     
                         Range("a2").Activate
     
     
                    End If
     
     'on copie les données dans la feuille correspondantes
     
                        Feuil1.Cells(x + 1, [ID].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 1)
                        Feuil1.Cells(x + 1, [seq].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 2)
                        Feuil1.Cells(x + 1, [pair_impair].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 3)
                        Feuil1.Cells(x + 1, [etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 4)
                        Feuil1.Cells(x + 1, [acronyme_etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 5)
                        Feuil1.Cells(x + 1, [item_etab_moulinette].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 6)
                        Feuil1.Cells(x + 1, [item_etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 7)
                        Feuil1.Cells(x + 1, [descr_etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 8)
                        Feuil1.Cells(x + 1, [couleur_etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 9)
                        Feuil1.Cells(x + 1, [fourn_etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 10)
                        Feuil1.Cells(x + 1, [fournisseur].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 11)
                        Feuil1.Cells(x + 1, [marque_etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 12)
                        Feuil1.Cells(x + 1, [cat_etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 13)
                        Feuil1.Cells(x + 1, [format_contrat].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 14)
                        Feuil1.Cells(x + 1, [qte_an].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 15)
                        Feuil1.Cells(x + 1, [prix_contrat].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 16)
                        Feuil1.Cells(x + 1, [valider_x].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 17)
                        Feuil1.Cells(x + 1, [commentaire].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 18)
     
     
     
    'on supprime les lignes vides si bien sur les feuilles ont été créés
     
                        Sheets(nom_fournisseur.Value).Select
                        Range("A2").EntireRow.Insert
                        Sheets(nom_fournisseur.Value).Range("b1:B" & LastLignUsedInColumn("B")).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
     
     
     
            End If
     
        Feuil1.Select
     
        Else
     
       MsgBox "Le nom du fournisseur suivant est numérique : " & nom_fournisseur & " SVP corriger et re-cliquer sur généré"
       Exit Sub
       End If
     
        Next nom_fournisseur
     
    finish = Timer
     
     
    MsgBox "durée du traitement: " & finish - start & " secondes"
     
    Exit Sub
     
    errorHandler:
    MsgBox "Subroutine exécuté dans le mauvais fichier !!!", vbCritical
     
     
    End Sub
    J'ai validé dans Thisworkbook et il est complètement vide.

    J'ai exécuté ma macro via F8 et lorsque j'arrive a mon premier X, c'est la que l'on me renvoi au errorhandler, pourtant tout fonctionne comme il le faut avec le bouton


    JE suis plus qu'embeté, Est-ce que vous savez comment réglé mon problème


    merci pour votre temps et énergie coonsacrer a résoudre cette situation

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    quel numéro de ligne ton erreur ? ...36 ?

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Si c'est IsEmpty alors IsNumeric retourne une erreur!

    If IsNumeric(""& nom_fournisseur) = False And trim("" & nom_fournisseur)) <>""Then

  4. #4
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour dysorthographie,

    comment tu fais pour mettre le fond gris (de la ligne) ?

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mjpmjp Voir le message
    bonjour dysorthographie,

    comment tu fais pour mettre le fond gris (de la ligne) ?

    @+JP
    Bonsoir mjpmjp, [ c ] code ![ / c] sens espaces dans le []

  6. #6
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    re,
    ok merci

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  7. #7
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 556
    Par défaut
    Je viens de voir ma GIGAbourde

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Shapes.Range(Array("Button 1")).Delete

    en détruisant mon bouton et en faisant des copier coller, la ligne cause le probleme ...


    dire que j'ai passé 1 heure a chercher et tout a coup ... pouf ... en lisant vos messages et refaisant un F8 afin de trouver le numéro de ligne ...



    merci a vous tous pour le temps consacré a vouloir ma'idé, c'est vraiment plus qu'apprécié

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/10/2015, 11h55
  2. [XL-2007] Création d'un bouton (contrôle de formulaire
    Par Gabich21 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/02/2015, 14h12
  3. [XL-2007] Création d'un bouton (contrôle de formulaire
    Par Gabich21 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/02/2015, 10h57
  4. [XL-2010] VBA : Bouton contrôle de formulaire avec insertion forme et suppression ancienne
    Par anonymous9 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/03/2014, 20h24
  5. [XL-2010] Affichage boutons contrôle de formulaire quand lignes sont groupées
    Par bibenki dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/11/2012, 10h13

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