XL 2019 Problèmes dans ma procédure pour remplir un échéancier automatiquement

donpopo

XLDnaute Occasionnel
Bonjour le forum,
Voici deux jours que je cherche à créer une procédure qui me remplirait une feuille échéancier en fonction de plusieurs critères.
Je m'explique:
Je souhaite, à chaque début d'année, créer des entrées dans l'échéancier et cela une seule fois par an.
Je voudrais, d'après ma feuille "indexations", inscrire dans la feuille "Echéancier", le rappel d'indexation loyer de chaque bail existant. (Ex.: "Indexer loyer + nom" dans la colonne 1 et la date d'indexation qui est le mois + 1 repris dans la colonne 2)

Ex.: col 1: Indexer loyer Bernes Col 2: 1 MARS

Pour retrouver mes baux, je recherche dans la feuille "Baux".

Je joins mon fichier pour une meilleure compréhension. Le problème se situe sur la procédure Initialize de l'userform "Form_Echeancier".

Ce qui est en annotation en vert fonctionnait déjà.

Merci de bien vouloir m'aider.
Donpopo
 

Pièces jointes

  • ESSAI OK.xlsm
    443 KB · Affichages: 15
Solution
Bonjour,

Il n' y a pas de problème, lorsque vous effacez des données, faites le avec la touche Suppr et non avec la barre d'espace, pour vous en convaincre, allez sur la feuille "Echéancier" sélectionnez les cellule A20 et faites un "Suppr" et relancez la macro, l'affichage commence à la ligne 19, recommencez en supprimant la cellule A18 et ainsi de suite. Que constatez-vous?
De plus dans la macro "Private Sub UserForm_initialize()", la variable "Annee" était toujours en Date au lieu de long.

Cdlt

Rouge

XLDnaute Impliqué
Bonjour,

2 erreurs trouvées
-la première concernant la recherche de la dernière colonne de la feuille "Indexations", remplacez :
VB:
Der_Col_Remp = Sheets("Indexations").Cells(Nr_Lign_Bail & Rows.Count).End(xlUp).Row
par:
Code:
Der_Col_Remp = Sheets("Indexations").Range("A1").End(xlToRight).Column

-la deuxième; dans la copie de la feuille "Echéancier", vous n'incrémentez pas la dernière ligne, ce qui fait que les nouvelles données effacent les précédentes. remplacez:
Code:
            Sheets("Echeancier").Cells(Der_Lign_Ech, 2) = "Indexer " & Sheets("Indexations").Cells(Nr_Lign_Bail + 1, 2).Value
            Sheets("Echeancier").Cells(Der_Lign_Ech, 1) = Annee
par:
Code:
            Sheets("Echeancier").Cells(Der_Lign_Ech + 1, 2) = "Indexer " & Sheets("Indexations").Cells(Nr_Lign_Bail + 1, 2).Value
            Sheets("Echeancier").Cells(Der_Lign_Ech + 1, 1) = Annee

Cdlt
 

donpopo

XLDnaute Occasionnel
Bonjour le forum, Rouge,

Merci Rouge.
J'ai effectué les modifications dans mon programme; cela fonctionne bien mieux.

Cependant, lorsque le userform s'initialise, comme la date de l'année en cours n'est pas encodée sur la feuille "indexations", les noms des locataires s'affichent bien, mais la date n'apparait que pour le 1er locataire.
Cette date, je vais la rechercher dans la feuille "Baux" et là, les dates sont bien encodées pourtant.
Je ne vois pas l'astuce.

Voici le fichier corrigé.

Merci de m'aider,
 

Pièces jointes

  • ESSAI OK.xlsm
    442.6 KB · Affichages: 9

Rouge

XLDnaute Impliqué
Il me semble que vous vous mélangez les pinceaux.
quand je regarde cette ligne:
VB:
            Sheets("Echeancier").Cells(Der_Lign_Ech + 1, 2) = "Indexer " & Sheets("Indexations").Cells(Nr_Lign_Bail + 1, 2).Value
vous allez chercher une ligne qui se trouve dans la feuille "Baux" (Nr_Lign_Bail) que vous attribuez à la feuille "Indexations", or les décalages ne sont pas du tout les mêmes, dans la feuille "Baux", c'est du ligne à ligne, alors que dans la feuille "Indexations" il y a un décalage de 8 lignes.

Ensuite il faut déclarer la variable "Annee" en long et non de date.

Commencez par corriger ces 2 points, on verra pour la suite.
 

donpopo

XLDnaute Occasionnel
Merci, tout fonctionne impeccablement; j'ai mis la date en Long et changé la variable dans indexation.

Lorsque je réinitialise en ôtant la date (2021) dans indexation et que je supprime les données de la feuille "Échéancier", j'initialise le formulaire échéancier, mes échéances (2) s'encodent bien.

Cependant, lorsque j'ajoute manuellement une échéance en ligne 1 du formulaire, pas de problème jusqu'à ce si, pour vérification, je supprime les données de la feuille échéancier et la date dans indexation; lorsque je rouvre mon formulaire à nouveau, rien n'apparait.

Après vérification, la date (2021) s'encode bien sur la feuille indexations, mais les données dans la feuille Échéancier s'encodent à la ligne 21 et 22 ! Comme si mes lignes 1 à 20 n'étaient pas vide.

Y a t'il un problème lors de la recherche de la dernière ligne?
 

Pièces jointes

  • ESSAI OK.xlsm
    452.2 KB · Affichages: 7

Rouge

XLDnaute Impliqué
Bonjour,

Il n' y a pas de problème, lorsque vous effacez des données, faites le avec la touche Suppr et non avec la barre d'espace, pour vous en convaincre, allez sur la feuille "Echéancier" sélectionnez les cellule A20 et faites un "Suppr" et relancez la macro, l'affichage commence à la ligne 19, recommencez en supprimant la cellule A18 et ainsi de suite. Que constatez-vous?
De plus dans la macro "Private Sub UserForm_initialize()", la variable "Annee" était toujours en Date au lieu de long.

Cdlt
 

Pièces jointes

  • donpopo_Problèmes dans ma procédure pour remplir un échéancier automatiquement.xlsm
    421.5 KB · Affichages: 13

donpopo

XLDnaute Occasionnel
Bonjour,
effectivement; maintenant tout fonctionne.

Personnellement, pour supprimer le contenu des cellules, je sélectionnais les cellules de A1 à B25 environ et je cliquais sur la touche Suppr.

Merci pour toute l'aide apportée

Amicalement
 

Discussions similaires

Statistiques des forums

Discussions
315 127
Messages
2 116 539
Membres
112 774
dernier inscrit
Foudil59