Microsoft 365 Première cellule vide d'une colonne

Willmaz

XLDnaute Nouveau
Supporter XLD
Bonjour,

Je suis un tout nouveau utilisateur d'Excel et je souhaite créer un calendrier de repos consultable par 4 personnes. J'ai créé un formulaire pour saisir les diverses absences et ces données sont enregistrées grâce à une macro sur ma feuille "compilation". La macro vient ensuite copier la nouvelle ligne enregistrée pour la coller sur la feuille "liste absence" en A1;B1;C1;D1 . La ligne collée est alors soumise à une formule qui fait apparaitre toutes les dates comprises dans la période de vacances. La ou je bloque, c'est que j'aimerai que ma macro copie ensuite les lignes créées (et uniquement ces lignes, en d'autres termes pas les lignes vide. Ces lignes ne sont d'ailleurs pas vide car elle contiennent des formules) pour les coller à la fin d'une liste (présente également sur ma 3eme feuille colonne F à I).Une fois collées la macro effacerait les cellules A1 B1 C1 et D1 afin de pouvoir recommencer la manœuvre lors d'une prochaine saisie de date. Pour info, la liste créée dans les colonnes F à I sera par la suite concaténée pour pouvoir faire apparaitre les jours d'absences des uns et des autres dans mon calendrier... Ce n'est peut être pas très claire car je n'ai probablement pas les bons termes.. Mais si vous pouviez m'aider j'en serais grée. Pour info le calendrier n'est pas finalisé, je m'en chargerai par la suite.
Fichier en PJ.
 

Pièces jointes

  • Calendrier absence V1.xlsm
    74.1 KB · Affichages: 9

Willmaz

XLDnaute Nouveau
Supporter XLD
En référence au tableau joint précédemment, imaginons que l'agent LG obtient des RTT du 16/03/2021 au 22/03/2021.
1615914003420.png
La macro reporte les données sur la feuille "Compilation" sur la ligne 2.
1615914101306.png
puis copie la ligne 2 sur la feuille "Liste Absence" sur la ligne 1
1615914186964.png
.Il y a des formules sur les lignes 2, 3, 4 .... qui permettent de faire apparaitre tous les jours compris dans l'absence. C'est la ou je bloque, je souhaite que la macro copie les lignes nouvellement créées (de A1 à D7) et les colles à la suite de cette liste.
1615914423553.png
. J'ai tenté d'enregistrer la macro en utilisant ctrl flèche du bas, mais ça m'emmène ligne 123, là ou s'arrête mes ligne de formule... (Oui j'ai prévu large en cas de longue absence). Je n'arrive pas à ce que la macro copie uniquement les cellules ou il y a des éléments et non des formules. Ensuite il faut les copier a la suite de la dernière ligne non vide des colonnes F à I. Et ça aussi je ne sais pas le faire....
 

Willmaz

XLDnaute Nouveau
Supporter XLD
Bonjour, @Phil69970 ça fonctionne... presque. Avec des petites durées parfait! J'ai fait un petit test ça marche.
1615957606900.png

Mais j'ai fait un autre essai avec une période plus longue et ça ne me copie/colle pas toute la liste créée. ca n'a marché que pour les 10 premiers...
1615957791197.png

Avec d'autre tests, je peux conclure que ça ne copie/colle que 10 lignes..
 

Phil69970

XLDnaute Accro
Re @Willmaz , le forum

J'ai trouvé mon erreur il manque un point 🤔dans mon code
DL = .Range(.[A:A].Find("*", , , , xlByRows, xlPrevious).Address(0, 0)).Row '+ 1

Code:
With Worksheets("Liste Absence")
    Dim Derlig&, DL&
    Derlig = .Range("F" & Rows.Count).End(xlUp).Row + 1
    
' Ici il manque le point . Juste apres le ==>  .Range(     .    [A:A].Find
' A bien mettre entre la parenthese et le crochet  ( . [
    DL = .Range(.[A:A].Find("*", , , , xlByRows, xlPrevious).Address(0, 0)).Row '+ 1

'******
    
    .Range("F" & Derlig & ":I" & Derlig + DL - 1) = .Range("A1:D" & DL).Value
    .Range("A1:D1") = ""
End With

1615998735402.png

Je te laisse le rajouter dans le code:)
Si tu n'y arrives pas je te referais un fichier avec la correction

@Phil69970
 

Discussions similaires

Haut Bas