XL 2016 Problème d'exécution de marco depuis userform

flav49

XLDnaute Nouveau
Bonjour à vous,

Je travail sur la réalisation d'un planning dynamique (un peu comme un gantt au final) pour un fichier de suivi / planification pour un jeu en ligne. Ca me permet en même temps de travailler mon code vba, donc j'aime bien travailler un peu sur ce genre de fichier pour enrichir mes compétences.

Pour décrire rapidement mon soucis, je souhaite d'abord poser les bases de ce sur quoi je travail, à savoir un planning dynamique dans lequel 1 semaine réel correspond à un mois. Dans la mise en forme j'ai opter pour une fusion de cellule pour les 7 cellules qui correspondent au mois ce qui me bloque quand après je veux trouver la position du jour souhaité. j'ai donc découvert que je devais enlever mes fusions de cellules pour exécuter mon code et c'est là que mon soucis arrive.

J'ai donc créer deux fonctions dans un module, une pour supprimer la fusion et l'autre pour refusionner. Le 2 fonctions fonctionnent très bien lorsque je les exécutes depuis virtual basic. en revanche une fois que j'appelle la fonction pour supprimer la fusion depuis l'userform (via le bouton valider dans l'userform "UserForm_plannifier") j'ai une erreur qui s'affiche et en débuggant je me rend compte que le nombre de colonne calculé reste à 13 au lieu de 169 ... et là je ne trouve pas l'explication...

Si quelqu'un aurais une explication sur mon problème svp .

merci
Flavien
 

Pièces jointes

  • Maraichage.xlsm
    98.4 KB · Affichages: 17
Solution
Bonjour Flav,
J'ai fait quelques tests en manuel.
Dans Refusionner Dercol vaut 169 ... ou 13. Tout dépend de la feuille active. ( 169 sur Planning_culture et 13 sur Planning)
Il faut préciser dans quelle feuille vous travaillez pour évaluer Dercol. Je pense que ça va résoudre le problème :
VB:
Sub refusionner()
    Dim cel As Range
    Dim dercol As Integer
    Set cel = Sheets("Planning_culture").Cells(2, 2)
    dercol = Sheets("Planning_culture").Cells(3, Columns.Count).End(xlToLeft).Column

Juste un point parce que ça pique les yeux. Dans Module_planning_planification, vous avez un superbe arbre de IF , c'est vrai que l'IF est un bel arbre ! Mais on doit pouvoir simplifier :
Code:
        For i = 0 To UBound(Tableau)
            If...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Flav,
J'ai fait quelques tests en manuel.
Dans Refusionner Dercol vaut 169 ... ou 13. Tout dépend de la feuille active. ( 169 sur Planning_culture et 13 sur Planning)
Il faut préciser dans quelle feuille vous travaillez pour évaluer Dercol. Je pense que ça va résoudre le problème :
VB:
Sub refusionner()
    Dim cel As Range
    Dim dercol As Integer
    Set cel = Sheets("Planning_culture").Cells(2, 2)
    dercol = Sheets("Planning_culture").Cells(3, Columns.Count).End(xlToLeft).Column

Juste un point parce que ça pique les yeux. Dans Module_planning_planification, vous avez un superbe arbre de IF , c'est vrai que l'IF est un bel arbre ! Mais on doit pouvoir simplifier :
Code:
        For i = 0 To UBound(Tableau)
            If Tableau(i) >= 1 And Tableau(i) <= 12 Then
                Colonne = 1 + Tableau(i)
                Sheets("Planning").Cells(2, Colonne).Value = "1"
            End If
        Next i
 

flav49

XLDnaute Nouveau
Bonjour sylvanu,

Merci pour votre aide, je n'avais pas pensé à ce point là effectivement.

Merci pour l'astuce pour supprimer mon arbre if, c'est vrai que ce n'était pas très esthétique et long en même temps !!! je tacherais de m'en souvenir pour la prochaine fois que je rencontrerais ce type de besoin.

Flav
 

Discussions similaires

Réponses
3
Affichages
1 K