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

  • Initiateur de la discussion Initiateur de la discussion donpopo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
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
 
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

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.
 
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

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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour