ajout de ligne sous condition

baud95

XLDnaute Nouveau
bonjour à tous et merci pour l'aide que vous apportez.

Je m'appelle David ( petit nouveau sur le forum )et je suis cadre intermediaire dans la fonction publique.

Mon administration a mis en place un logiciel de gestion du temps de travail.
Cependant celui-ci ne fait pas tout ce que je voudrais. Je fais donc une importation vers excel.

et là deux problèmes se pose :

1) la ligne nom prenom est parfois sur une ligne ou deux lignes en fonctions que l'agent a ou n'a pas d'absence autorisée.
Je souhaiterai qu'une ligne se rajoute automatiquement si la ligne nom prenom ne fait qu'une ligne.

2) lorsque les congés durent plus d'un jour la cellule est fusionnée sur la zone entiere.

Je souhaiterai donc faire une macro qui défusionne toutes les lignes absences et qui lorsque la case est bleue indique "CA".

Je ne sais pas si tout cela est possible mais bon on ne sait jamais.

Merci pour l'aide apportée et bonne année un peu en avance

Cordialement
David.
 

Pièces jointes

  • Classeur1.xls
    25.5 KB · Affichages: 55
  • Classeur1.xls
    25.5 KB · Affichages: 51
  • Classeur1.xls
    25.5 KB · Affichages: 54
G

Guest

Guest
Re : ajout de ligne sous condition

Bonsoir David et bienvenue sur le forum,

ton classeur n'est pas suffisament représentatif de ce que tu veux. De plus il faudrait voir comment tu importes les données. Sans-doute serait-il possible d'éviter les cellules fusionnées.

A partir de ce que tu nous a donné, voici une macro qui défusionne les cellules de la colonne A et rajoute une ligne sous les autres ligne occupées.

Code:
Sub InsererLignes()
Dim ligne As Long
Dim calMode As XlCalculation
'Pour aller plus vite
On Error GoTo FinInsertionLignes
With Application
    calMode = .Calculation
    .ScreenUpdating = False
    .EnableEvents = False
    .calculcation = xlManual
End With
With ActiveSheet
    For ligne = .Cells(.Rows.Count, 1).End(xlUp).Row To 3 Step -1
        With .Cells(ligne, 1)
            If .MergeCells Then .UnMerge
            If Not .Offset(-1).MergeCells Then
                .EntireRow.Insert xlShiftDown
            Else
                ligne = ligne - 1
            End If
        End With
    Next ligne
End With
'Rétablir les propriétés de départ de l'application
FinInsertionLignes:
With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .calculcation = calMode
End With
End Sub

Bon réveillon à tous.
A+
 

baud95

XLDnaute Nouveau
Re : ajout de ligne sous condition

merci Hasco pour ta reponse aussi rapide.

J'ai oublié le fichier au bureau mais je le ramène Lundi.

Est ce que ton code je peux le copier coller directement sur VBA et affecter la macro à un bouton ?

merci.
meilleurs voeux pour cette nouvelle année.
Cordialement David.
 

baud95

XLDnaute Nouveau
Re : ajout de ligne sous condition

Merci Hasco pour ton aide.

Hélas ça bug à un moment.

j'ai joint un fichier exemple:

il s'agit d'une extraction de planning. 1 agent peut avoir 1 ligne si il travaille normalement ou 2 lignes si il a des absences autorisées.

Je souhaiterai que pour chaque agent il y est 2 lignes afin que ma feuille de calcul ai les bonnes cellules de réference. (le premier nom commence à la ligne 9 et le dernier à la ligne 100)


merci pour votre aide

cordialement

David
 
Dernière édition:
G

Guest

Guest
Re : ajout de ligne sous condition

bonjour,

voici le fichier modifié. Vois si tu es d'accord pour le rajout des lignes (au bon endroit).
Pour que la macro fonctionne, il faut qu'il y ait des noms dans la colonneA.
Faut-il refusionner les cellules après ajout de ligne sur colonne A et sur colonne B?

A+
 

baud95

XLDnaute Nouveau
Re : ajout de ligne sous condition

Merci pour ton travail c'est tout à fait ce que j'attendais.
Effectivement ça serait beaucoup mieux si les colonnes A et B avait les cellules de nouveau fusionnées.
De plus je souhaiterai que la selection ne commence qu'aprés la ligne nom prenom qui se trouve en ligne 8. Je ne sais pas si cela est possible ou pas mais merci pour ton aide.

Cordialement David.
 
G

Guest

Guest
Re : ajout de ligne sous condition

Re,

De plus je souhaiterai que la selection ne commence qu'aprés la ligne nom prenom qui se trouve en ligne 8

Dans le classeur que tu m'a donné la ligne nom et prénom se trouve en ligne 4 et non 8. Qu'elle est la bonne?

Qu'est-ce que tu appèle selection? Que l'utilisateur ne puisse pas sélectionner au dessus de la ligne Nom et Prénom?

A+
 

baud95

XLDnaute Nouveau
Re : ajout de ligne sous condition

Je te joins un fichier avec la ligne nom prenom qui commence en ligne 8.
De plus quand je parle de selection, je souhaiterai en faite que la ligne "nom prenom " (L8) ne soit pas pris en compte dans le rajout d'une ligne.

Merci beaucoup
 
Dernière édition:
G

Guest

Guest
Re : ajout de ligne sous condition

Re,

Voici le fichier modifié.

Si la ligne 'Nom prénom' change ultérieurement,

Ouvrir l'éditeur de code sur la macro InsererLignes()

Dans la macro localiser la ligne
Code:
For ligne = .Cells(.Rows.Count, 1).End(xlUp).Row To [SIZE=3][B]8[/B][/SIZE] Step -1
Change le 8 pour le nouveau numéro de ligne

A+
 

baud95

XLDnaute Nouveau
Re : ajout de ligne sous condition

merci beaucoup pour ton aide et l'aide de l'ensemble des personnes du FORUM mon Tableur commence à ressembler à quelque chose.

Plus que quelques modifications et copie de macro pour chaque mois et le tour sera jouer.

A bientot

Cordialement

David
 

Discussions similaires

Réponses
3
Affichages
217
Réponses
7
Affichages
377

Membres actuellement en ligne

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 536
dernier inscrit
komivi