Résolu 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
 
Ce fil a été résolu! Aller à la solution…

Fichiers joints

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
 
Ce message a été identifié comme étant une solution!

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
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Pour éviter de multiples IF on peut aussi utiliser le sélect case qui permet de simplifier les choses.
Mais dans votre cas une simple boucle était suffisant.
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas