OVH Cloud OVH Cloud

Création de ligne automatique

11 réponses
Avatar
Philippe B
Bonjour à tous !
Me revoilà avec mon lot de problèmes !!!!
Pour mon travail, je me suis fait un tableau sous Excel qui me permet de
connaître certaines échéances pour certains salariés dont j'ai la charge.
Les colonnes sont les suivantes :
Nature de l'opération, Nom et Prénom, Date de début et date de fin.
Grâce à votre aide, j'ai une mise en forme conditionnelle qui m'indique les
tâches en retard (par rapport à la date du jour) ainsi que les tâches qui
vont bientôt arriver à échéances. Ca, c'est tout bon.
Pour certains nouveaux salariés, j'ai plusieurs tâches à plusieurs mois
d'intervalle.
Par rapport à la date d'entrée, je dois avoir une nouvelle tâche 6 mois
après sa rentrée et ensuite 3 mois encore après.
Plutôt que de saisir manuellement, je voulais savoir s'il y avait un moyen
pour créer automatiquement les 3 lignes d'un coup par le biais d'une macro.
Qu'en pensez-vous ??

Amicalement

Philippe

1 réponse

1 2
Avatar
Jacky
Re...
Je vais maintenant decortiquer cette macro pour en comprenre le principe.


Si cela peut t'aider...
'------------
Sub jj()
Application.ScreenUpdating = False ' ***évite le clignotement de l'écran
For Each c In Range("a2:a" & [a65536].End(3).Row) '***charge dans la
variable c le contenu du tableau A2:a+ la dernière ligne renseignée de la
colonne A
x = 6 '***charge la variable x du nombre 6, pour l'ajouter au mois en
cours dans la colonne E(+6 mois)
For i = 1 To 2 '***boucle pour les 2 lignes à ajouter (6 mois et 9 mois)
With ActiveSheet ' ***avec la feuille en cours faire les instructions
suivantes(pour éviter d'écrire le nom de la feuille devant chaque
instruction.
derlg = .[a65536].End(3).Row + 1 '***cherche la ligne suivante libre et
la charge dans la variable derlg
.Range("a" & derlg) = c '***inscrit la valeur de c dans la colonne
A+dernière ligne vide
.Range("b" & derlg) = c.Offset(0, 1) '***inscrit la valeur de la colonne
B (C.offset(0,1)) dans la colonne B+dernière ligne vide
.Range("c" & derlg) = c.Offset(0, 2) '***inscrit la valeur de la colonne
C (C.offset(0,2)) dans la colonne c+dernière ligne vide
.Range("d" & derlg) = c.Offset(0, 3) '***inscrit la valeur de la colonne
D (C.offset(0,3)) dans la colonne d+dernière ligne vide
.Range("e" & derlg) = DateSerial(Year(c.Offset(0, 4)), Month(c.Offset(0,
4)) + x, Day(c.Offset(0, 4)))
'***ajout x de valeur 6 au 1er passage et de valeur 9 au 2ème passage de
la boucle "for==>next" à la date contenu dans c.offset(0,4)ou colonne E.
'***Voir aussi l'aide de "DateSerial"
.Range("f" & derlg) = "1er Avis après " & x & " mois" '***inscrit le
texte + la valeur de x dans la colonne f+dernière ligne vide (F+Derlg)
x = 9 '***Change la variable x qui est 6 en 9, pour l'ajouter au mois
en cours dans la colonne E(+9 mois)
End With '***fin de instruction avec la feuille en cours
Next ' ***passe à la ligne suivante de la boucle for i= 1 to 2 (pour
inscrire le mois +9)
Next ' ***passe à la ligne suivante du tableau de départ(Range("a2:a" &
[a65536].End(3).Row))
End Sub
'------------------

Bon courage
--
Salutations
JJ


"Philippe B" a écrit dans le message de news:
e0iR3NJ%
Salut Jacky !!
Mille merci pour tout ton travail et ta patience...
Comme tu as pu le constater, je débute tout juste sur les macro et je me
rend compte qu'on l'on peut vraiment tout faire quand on maitrise comme
toi.
Je vais maintenant decortiquer cette macro pour en comprenre le principe.

Encore merci

Amicalement

Philippe


1 2