Re : Besoin aide VBA
Bonjour.
Il est clair que c'est à vous d'adapter vos macro comme si c'était vous qui les aviez écrites. Moi je ne vous donne que des modules de service permettant une programmation aisée, et une technique de programmation essentielle, à savoir ne jamais travailler directement sur les cellules (beaucoup trop long), mais toujours mais le moins souvent possible sur des plages entières via des tableaux en mémoire chargés d'un coup, en entrée, et préalablement élaborés en sortie.
Là, dans ce que vous avez joint, dans le module SélectColonnes, procédure SélectionColonnes, il manque une instruction CrMax = 0 au début pour recommencer la construction du tableau TCe. C'est un peu de ma faute parce qu'il y avait bien CrMax = 3 et je vous avais dit de la supprimer. Or c'est une variable Public, elle n'est donc pas remise à 0 automatiquement.
Dans l'UfBudget, procédure BtnAjouter_Click(), phase Constitution du tableau le For Cr part toujours de 4 au lieu de 1.
Dans la Worksheet_SelectionChange de FBdD (Base en cours) il y a toujours ce Or Target.Column < 4 qui n'a plus lieu d'être puisqu'on doit maintenant pouvoir sélectionner aussi les 3 ères colonne à reproduire ou non. Et plus loin, il faut Me.[A1:IV1] au lieu de Me.[D1:IV1]
Je vais procéder à ces modifiations de mon coté et tester. Je vous tiens au courant s'il y a d'autres choses qui ne vont pas.
Vu : FBudget.[A:C].ColumnWidth = 5 à supprimer. Ces colonnes n'étant plus des colonnes de rubriques, elle doivent rester soumises au FBudget.Columns.AutoFit au début de cette ligne.
Voilà, maitenant en sélectionnant pour mettre des × les 3 1ères colonnes ligne 1 de Base en cours, puis en sélectionnant dans l'Uf Société : EE , on obtient sensiblement le même résultat que dans votre feuille Résultat attendu, sauf que tout est décalé d'une ligne vers le bas puisque vous avez précisé Public Const LTitre = 2 'Numéro de ligne où commence le rapport dans l'onglet
Le commentaire est faut, d'ailleurs, c'est plutot 'Numéro de ligne des intitulés du rapport.