Re,
Bon commençons par le Code sur le composant Feui11(Planning)
Inutile de spécifier le nom de l'onglet chaque fois : Sheets("Planning") puisque c'est de lui qu'il s'agit. Quand c'est vraiment nécessaire, Me fait l'affaire : Me.Shapes("rectangle 9").Visible = False
Évite les Select inutiles qui ne font que ralentir l'exécution du code :
Range("B12:B" & derligne).Select puis un peu plus loin Sheets("Planning").Range("D3").Select.
Les Variables
Utilise Option Explicit en haut des modules. C'est vrai que c'est pénible car ça oblige à déclarer toutes les variables. Mais ça évite tellement d'erreurs que c'est, finalement, un gain de temps précieux.
Met de préférence une majuscule ou tout en en majuscule pour le nom de tes variables. En effet, VBE va automatiquement les réécrire en majuscules quand tu éditeras le code. Ça te permet, d'un rapide coup d'œil de vérifier qu'il n'y a pas une faute de frappe…
Tu peux déclarer plusieurs variables sur une même ligne mais il faut toujours spécifier le type de chacune sinon elle prendra le type Variant par défaut (très gourmand en mémoire)
Le type Double (nombre à virgule flottante) n'est pas approprié pour des variables de lignes ou des colonnes.
Le dernier numéro de colonne après la version 2003 est 16384. Donc, le type Integer (entre -32 768 et 32 767) convient pour typer une variable de colonne et aussi pour une variable de ligne dans un tableau contenant moins de 32768 lignes. Sinon il faudra utiliser le type Long pour une variable de ligne.
Dim lig, col As Double devrait être Dim LIG As Long, COL As Integer.
[b]ligFin = IIf(ligFin = Rows.Count, 0, ligFin)
[/b]Donner à une variable de ligne la valeur 0 peut-être risqué et engendrer un plantage mais dans ton cas ça n'a pas d'incidence…
Sinon c'est super bien écrit ! La suite au prochain post...