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 :

Erreur VBA: Procédure trop longue [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Juin 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut Erreur VBA: Procédure trop longue
    Bonsoir à toutes et tous et merci d'avance pour l'aide que vous pourrez sans doute m'apporter.

    Je me heurte à un problème que jusqu'ici j'avais réussi à contourner (bidouillage) mais aujourd'hui j'ai besoin de votre aide.
    j'ai crée un code (pas très simple) qui me permet d'importer au sein de textbox la valeur contenue dans des cellules excel. La procédure est trop longue et il m'est impossible d'avancer car je ne maîtrise pas suffisamment vba.
    Si vous pouviez m'aider à simplifier mon code çà serait cool.

    Voici le code un morceau du code:
    le problème c'est que je l'utilise cette procédure autant de fois qu'il y a de nom dans ma combobox (soit 20 fois!!!!)


    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
    Private Sub comboboxconsultants_change()
    If ComboBoxConsultants = "NOM Prénom" Then ==> la liste contient 20 NOMS (donc j'ai recopié 20 fois la procédure ......pas super!)
    Sheets("Consultants").Select
    Labelnom = "NOM prénom"
    
    Set CurrentChart = Sheets("Consultants").ChartObjects(3).Chart
    Sheets("Consultants").ChartObjects("Graphique 1").Activate
    ActiveChart.ChartArea.Select
     FName = ThisWorkbook.Path & "\temp2.gif"
    CurrentChart.Export Filename:=FName, FilterName:="GIF"
    UserForm6.Image1.Picture = LoadPicture(FName)
    If Dir(FName) <> "" Then Kill FName 'supprime le fichier temporaire'
    
    Set CurrentChart = Sheets("Consultants").ChartObjects(4).Chart
    Sheets("Consultants").ChartObjects("Graphique 2").Activate
    ActiveChart.ChartArea.Select
     FName = ThisWorkbook.Path & "\temp2.gif"
    CurrentChart.Export Filename:=FName, FilterName:="GIF"
    UserForm6.Image2.Picture = LoadPicture(FName)
    If Dir(FName) <> "" Then Kill FName 'supprime le fichier temporaire'
    
    'janvier
    T1.Text = ThisWorkbook.Sheets("Consultants").Range("o57").Value
    T2.Text = ThisWorkbook.Sheets("Consultants").Range("p57").Value
    T3.Text = ThisWorkbook.Sheets("Consultants").Range("q57").Value
    T4.Text = ThisWorkbook.Sheets("Consultants").Range("r57").Value
    T5.Text = ThisWorkbook.Sheets("Consultants").Range("s57").Value
    T6.Text = ThisWorkbook.Sheets("Consultants").Range("t57").Value
    
    'fevrier
    T7.Text = ThisWorkbook.Sheets("Consultants").Range("o58").Value
    T8.Text = ThisWorkbook.Sheets("Consultants").Range("p58").Value
    T9.Text = ThisWorkbook.Sheets("Consultants").Range("q58").Value
    T10.Text = ThisWorkbook.Sheets("Consultants").Range("r58").Value
    T11.Text = ThisWorkbook.Sheets("Consultants").Range("s58").Value
    T12.Text = ThisWorkbook.Sheets("Consultants").Range("t58").Value
    
    'mars
    T13.Text = ThisWorkbook.Sheets("Consultants").Range("o59").Value
    T14.Text = ThisWorkbook.Sheets("Consultants").Range("p59").Value
    T15.Text = ThisWorkbook.Sheets("Consultants").Range("q59").Value
    T16.Text = ThisWorkbook.Sheets("Consultants").Range("r59").Value
    T17.Text = ThisWorkbook.Sheets("Consultants").Range("s59").Value
    T18.Text = ThisWorkbook.Sheets("Consultants").Range("t59").Value
    
    'avril
    T19.Text = ThisWorkbook.Sheets("Consultants").Range("o60").Value
    T20.Text = ThisWorkbook.Sheets("Consultants").Range("p60").Value
    T21.Text = ThisWorkbook.Sheets("Consultants").Range("q60").Value
    T22.Text = ThisWorkbook.Sheets("Consultants").Range("r60").Value
    T23.Text = ThisWorkbook.Sheets("Consultants").Range("s60").Value
    T24.Text = ThisWorkbook.Sheets("Consultants").Range("t60").Value
    
    'mai
    T25.Text = ThisWorkbook.Sheets("Consultants").Range("o61").Value
    T26.Text = ThisWorkbook.Sheets("Consultants").Range("p61").Value
    T27.Text = ThisWorkbook.Sheets("Consultants").Range("q61").Value
    T28.Text = ThisWorkbook.Sheets("Consultants").Range("r61").Value
    T29.Text = ThisWorkbook.Sheets("Consultants").Range("s61").Value
    T30.Text = ThisWorkbook.Sheets("Consultants").Range("t61").Value
    
    'juin
    T31.Text = ThisWorkbook.Sheets("Consultants").Range("o62").Value
    T32.Text = ThisWorkbook.Sheets("Consultants").Range("p62").Value
    T33.Text = ThisWorkbook.Sheets("Consultants").Range("q62").Value
    T34.Text = ThisWorkbook.Sheets("Consultants").Range("r62").Value
    T35.Text = ThisWorkbook.Sheets("Consultants").Range("s62").Value
    T36.Text = ThisWorkbook.Sheets("Consultants").Range("t62").Value
    
    'juillet
    T37.Text = ThisWorkbook.Sheets("Consultants").Range("o63").Value
    T38.Text = ThisWorkbook.Sheets("Consultants").Range("p63").Value
    T39.Text = ThisWorkbook.Sheets("Consultants").Range("q63").Value
    T40.Text = ThisWorkbook.Sheets("Consultants").Range("r63").Value
    T41.Text = ThisWorkbook.Sheets("Consultants").Range("s63").Value
    T42.Text = ThisWorkbook.Sheets("Consultants").Range("t63").Value
    
    'aout
    T43.Text = ThisWorkbook.Sheets("Consultants").Range("o64").Value
    T44.Text = ThisWorkbook.Sheets("Consultants").Range("p64").Value
    T45.Text = ThisWorkbook.Sheets("Consultants").Range("q64").Value
    T46.Text = ThisWorkbook.Sheets("Consultants").Range("r64").Value
    T47.Text = ThisWorkbook.Sheets("Consultants").Range("s64").Value
    T48.Text = ThisWorkbook.Sheets("Consultants").Range("t64").Value
    
    'septembre
    T49.Text = ThisWorkbook.Sheets("Consultants").Range("o65").Value
    T50.Text = ThisWorkbook.Sheets("Consultants").Range("p65").Value
    T51.Text = ThisWorkbook.Sheets("Consultants").Range("q65").Value
    T52.Text = ThisWorkbook.Sheets("Consultants").Range("r65").Value
    T53.Text = ThisWorkbook.Sheets("Consultants").Range("s65").Value
    T54.Text = ThisWorkbook.Sheets("Consultants").Range("t65").Value
    
    'octobre
    T55.Text = ThisWorkbook.Sheets("Consultants").Range("o66").Value
    T56.Text = ThisWorkbook.Sheets("Consultants").Range("p66").Value
    T57.Text = ThisWorkbook.Sheets("Consultants").Range("q66").Value
    T58.Text = ThisWorkbook.Sheets("Consultants").Range("r66").Value
    T59.Text = ThisWorkbook.Sheets("Consultants").Range("s66").Value
    T60.Text = ThisWorkbook.Sheets("Consultants").Range("t66").Value
    
    'novembre
    T61.Text = ThisWorkbook.Sheets("Consultants").Range("o67").Value
    T62.Text = ThisWorkbook.Sheets("Consultants").Range("p67").Value
    T63.Text = ThisWorkbook.Sheets("Consultants").Range("q67").Value
    T64.Text = ThisWorkbook.Sheets("Consultants").Range("r67").Value
    T65.Text = ThisWorkbook.Sheets("Consultants").Range("s67").Value
    T66.Text = ThisWorkbook.Sheets("Consultants").Range("t67").Value
    
    'decembre
    T67.Text = ThisWorkbook.Sheets("Consultants").Range("o68").Value
    T68.Text = ThisWorkbook.Sheets("Consultants").Range("p68").Value
    T69.Text = ThisWorkbook.Sheets("Consultants").Range("q68").Value
    T70.Text = ThisWorkbook.Sheets("Consultants").Range("r68").Value
    T71.Text = ThisWorkbook.Sheets("Consultants").Range("s68").Value
    T72.Text = ThisWorkbook.Sheets("Consultants").Range("t68").Value
    
    TR1 = [p73] 'trimestre'
    TR2 = [q73]
    TR3 = [r73]
    TR4 = [s73]
    
    End If
    End sub
    Merci pour votre aide.

    Bonne soirée

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 167
    Points
    10 167
    Billets dans le blog
    36

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Juin 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    Un grand MERCI!!

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2016
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2016
    Messages : 70
    Points : 109
    Points
    109
    Par défaut
    Bonsoir.

    Il faut utiliser des boucles. on a des paramètres qui reviennent de manière récurrente :
    T1 à Txx, ce qui fait une boucle de 1 à xx
    Colonnes O à T, ce qui fait une boucle de 15 à 20
    Lignes 57 à 68, ce qui fait une boucle de 57 à 68

    On va attribuer des valeurs à des variables i, j et k
    En imbriquant 3 boucles, on réduit le code à une ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 1 to 72
    For j = 57 to 68
    For k = 15 to 20
    Cells(i,20).Text = ThisWorkbook.Sheets("Consultants").Cells(k,j).Value
    Next k
    Next j
    Next i
    J'ai pas testé mais ça devrait marcher

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Juin 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut réponse erreur VBA procédure trop longue
    Bonsoir Matiou73,


    Merci pour cette réponse.
    Je viens de remplacer le code
    cependant j'ai le message d'erreur suivant:
    impossible de définir la propriété texte de la classe Range

    Bonne soirée

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 167
    Points
    10 167
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    VBA est très (trop) tolérant avec les types de données. Pour des noms ou des textes, ce n'est pas tragique, mais pour des nombres et des opérations mathématiques , cela peut causer des surprises.

    Essaie avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i,20).value = ThisWorkbook.Sheets("Consultants").Cells(k,j).Value
    Sinon, cela pourrait être une cellule vide, ou peut-être une formule cachée par un résultat.

    Une chose que tu peux essayer:

    Tu mets un espion (tu sélectionnes et tu cliques sur la petite paire de lunettes dans les barres d'outils) sur chacune des éléments suivants:

    i, j, k, Cells(k,j).Value, Cells(i,20).Text (ou Cells(i,20).value), si tu changes ton text en value.

    Normalement, tu devrais trouver au bas de ta fenêtre une fenêtre Espions pour suivre les valeurs des items espionnés.

    Même si tu sais qu'il y a probablement une erreur, tu lances la macro normalement.
    Tu vas avoir un message d'erreur, mais clique impérativement sur débogage.
    Ta ligne va être surlignée, c'est normal, mais dans ta fenêtre Espions, tu devrais avoir les valeurs des cellules en cause de même que les valeurs de tes compteurs i,j,k

    Cela devrait aider à trouver ce qui ne tourne pas rond.

    Ou bien, en plus long, mais probablement plus précis:

    Au besoin tu arrêtes complèment ta macro. (Le petit carré rouge dans les barres d'outils)
    Puis tu exécutes au pas à pas (F8) au lieu de cliquer sur Exécution. Chaque instruction est exécutée une à la fois et à la demande.
    Cela va te permettre d'observer ce qui se passe dans ta fenêtre espions et visuellement sur ta feuille dans Excel.

    Et, évidemment, un paquet d'autres trucs que tu vas découvrir au fur et à mesure dans les textes et dans tes propres expériences.

    P.S. IL n'y a aucune honte à continuer d'utiliser l'enregistreur de macros. Cela donne des canevas de procédure, plus rapidement que de tout écrire directement dans l'éditeur. Avec le temps, on apprend à élaguer le surplus. Mais l'enregistreur ne peut malheureusement pas créer de boucles, ni de structures conditionnelles.

    P.P.S Attends d'essayer l'enregistreur de macros de Word. Il ne supporte pas beaucoup la souris, lui.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Juin 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut réponse erreur VBA procédure trop longue
    Bonsoir,


    je viens d'essayer avec Cells(i,20).value mais malheureusement çà ne marche pas.
    Je vais suivre tes conseils et regarder dans la fenêtre espion.

    Merci!

  8. #8
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Bonjour
    J'ai toujours des difficultés à comprendre la présence d'un grand nombre de textboxes (cela me fait toujours penser à une conception mal choisie).
    Nonobstant, veux-tu s'il te plait répondre à chacune de ces deux questions ? :
    1) sur quoi se trouvent ces textboxes nommées T1 à T72 ?
    2) quelle est la raison précise pour laquelle tu utilises des textboxes ?

    Ces réponses devraient me permettre de te proposer quelque-chose en meilleure connaissance de cause.

    EDIT : je ne sais pas comment est organisée ta feuille "consultants".
    Mais le fait que tu dis que tu lances cette procédure en choisissant un consultant parmi 20 (depuis ta combobox) me laisse penser que les lignes 57 à 68 du code que tu nous montres correspondent au seul consultant choisi et que d'autres lignes correspondraient à d'autres consultants. Est-ce le cas ? Si oui : j'aimerais avoir une image (une capture d'écran, pas ton classeur) de ta feuille consultants, d'une part et, d'autre part, le code par lequel tu as abondé ta combobox.
    Idem si, au contraire, ce sont les colonnes (o,p,q,r,s,t dans le code montré) qui changent selon le consultant choisi

    Autre point : si ta feuille consultants contient (j'espère que tu as évité cette "boulette" malheureuse de Excel !) des cellules fusionnées, entoure-les d'un cercle rouge sur ta capture d'écran.

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Pour compléter ce que j'ai dit et t'ai demandé dans mon message précédent :
    Regarde cette image :
    Nom : FORMAFM.JPG
Affichages : 491
Taille : 133,2 Ko
    1) Est-ce ce genre (ne te préoccupe pour l'instant pas pas des Nos de ligne et de colonne) de disposition, que tu as adoptée pour ta feuille "consultants" ?
    2) Sur cette image :
    --- ni mes cellules C1:H1, ni mes cellules I1:N1 ne sont fusionnées (la fusion de Excel est source de problèmes à n'en plus finir)
    --- ma cellule C1 contient "Jacques", mais écrit avec une police de couleur égale à celle du remplissage de C1. Idem pour ma cellule I1

    Si cette disposition correspond à la tienne (mis à part les lignes et colonnes utilisées sur mon image), j'entrevois déjà une solution agile, flexible, évolutive et peu gourmande en code

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Juin 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut EREEUR PROCEDURE TROP LONGUE
    Bonjour,

    oui, cela ressemble à ce tableau excel.
    En pièce jointe: les éléments demandés.
    Bonne matinée


    Voici la Feuille excel.pdf
    Images attachées Images attachées  

  11. #11
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Tu n'as pas répondu à cette question :
    2) quelle est la raison précise pour laquelle tu utilises des textboxes ?

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Juin 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut réponse erreur VBA procédure trop longue
    Les textboxs me permettent de visualiser la production mois par mois des consultants.
    cordialement

  13. #13
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Les textboxs me permettent de visualiser la production mois par mois des consultants
    Uniquement VISUALISER ? Sans rien y saisir (modifs, etc ...) ?
    Car si cela uniquement, pas besoin de textboxes. Une listbox à plusieurs colonnes est alors suffisante, beaucoup moins gourmande et très efficace !

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Juin 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut EREEUR PROCEDURE TROP LONGUE
    Oui, uniquement visualiser sans modification de données

  15. #15
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Ben alors ...
    Regarde ce que ferait ceci (cela va te donner une sacrée idée) :
    1) sur un classeur neuf : fait exactement la même chose que sur l'image que j'ai mise plus haut (en n'oubliant pas de remplir C1 avec "Jacques" et I1 avec "Pierre" en "invisible)
    2) mets-leur des données dans les mois
    3) sur un userform :
    - mets une combobox combobox1
    - mets une listbox listbox1
    et ce code tout bête :
    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 lg_janv As Long, plage_a_traiter As Range
     
    Private Sub UserForm_Activate()
      ComboBox1.ColumnCount = 2
      ComboBox1.ColumnWidths = "2 cm;0 cm"
      dercol = Cells(1, Columns.Count).End(xlToLeft).Column
     With Worksheets("consultants")
       lg_janv = .Columns(1).Find("janvier", LookIn:=xlValues).Row
       For i = 1 To dercol
         If .Cells(1, i) <> "" Then
           ComboBox1.AddItem .Cells(1, i)
           ComboBox1.List(ComboBox1.ListCount - 1, 1) = i
           i = i + 5
         End If
       Next
       With ListBox1
        .ColumnCount = 6
       End With
     End With
    End Sub
     
    Private Sub ComboBox1_Click()
     Set plage_a_traiter = Range(Cells(lg_janv, Val(ComboBox1.List(ComboBox1.ListIndex, 1))), Cells(lg_janv + 12, Val(ComboBox1.List(ComboBox1.ListIndex, 1) + 5)))
     ListBox1.RowSource = "consultants!" & plage_a_traiter.Address
    End Sub
    et lance, depuis ta feuille de calculs :
    choisis dans la combo et regarde ce que tu obtiens dans la listbox
    Cerise sur le gâteau : une fois ton choix fait dans la combo, la plage à traiter reste en mémoire jusqu'à un autre choix. Tu peux donc l'invoquer comme tu l'entends, y compris pour imprimer cette plage.
    Oublie tes "tableaux" (ils compliqueraient sans aucun bénéfice réel)
    Précision : tu peux commencer tes consultants (disposition sur ta feuille) à la colonne de ton choix et disposer également tes mois à partir de la ligne de ton choix. Le code saura gérer tout cela.
    Essaye et reviens.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code ça va bien réduire : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim C As Long, L As Long
    For i = 1 To 75
         Me.Control("T" & i).Text =  ThisWorkbook.Sheets("Consultants").Cells(57, "O").Offset(L, C).Value
        C = C + 1
        If C Mod 6 = 0 Then C = 0: L = L + 1
    Next

  17. #17
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Bonjour rdurupt
    Il n'a finalement même pas besoin de ce "fagot" de 72 textboxes, s'il révise sa conception comme je le lui ai montré.
    Et même sa combobox (où l'utilisateur choisit le consultant) se remplit seule.
    Etc ...
    Et il peut ajouter (évolution) d'autres (autant qu'il veut) colonnes de consultants (le code suivra seul).
    Amitiés

  18. #18
    Invité
    Invité(e)
    Par défaut
    en position 17 je me fade pas tous désolé!

    mais je suis sur que tu l'as dit!

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Juin 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut EREEUR PROCEDURE TROP LONGUE
    re-Bonjour et merci

    Je vais tester et vous reviens.

  20. #20
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Juin 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut EREEUR PROCEDURE TROP LONGUE
    Unparia,

    Tout simplement génial! Ça marche parfaitement.Merci!
    En revanche sur mon document original, mes tableaux sont les un en dessous des autres.

    bon après midi

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2010] Procédure trop longue VBA
    Par lllll7 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/01/2016, 08h42
  2. Formulaire de saisie en VBA, procédure trop longue
    Par Karine2014 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 16/04/2014, 08h45
  3. [Vba access 97] Procédure trop longue
    Par saufffy dans le forum Access
    Réponses: 6
    Dernier message: 26/02/2007, 10h40
  4. [ASE] Procèdure trop longue
    Par Benjamin78 dans le forum Sybase
    Réponses: 2
    Dernier message: 11/04/2006, 10h01
  5. [ASE][T-SQL]Procédure trop longue
    Par Benjamin78 dans le forum Sybase
    Réponses: 5
    Dernier message: 21/03/2006, 12h25

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