Insertion lignes 3d

Bonjour a tous et toutes avec ce dimanche plein de soleil.

Je cherche une solution a un problème d'insertion de ligne vide sur un planning et je n'y arrive pas car ma macro me mélange tout les autre congés.

J'aimerais Insérer une ligne vide et copie formules dans toutes les feuilles de janvier à récap sans decaler les congés des autres noms.

Avec si possible un tri alphabétique sans mélanger les congés.

En un mots lier les noms a leurs lignes.

J'ai raccourcis le fichier car trop lourd, je n’ai laisser que le principale mais les feuilles originale sont de janvier a décembre.

Merci d'avance pour le coup de pouce.

Fichier joins.

11planning-forum.zip (56.64 Ko)

Bon je pense pas qu'il y ait de solutions.

Temp-pis

Bonjour,

tu es bien impatient, attend les derniers tests...

eric

Aux premiers abords ont pourrait le croire mais cela n'est pas le cas.

Mais comme j'ai vu un sujet passer et qu'il y a eu une réponse, je me disait soit ils sont tous en vacances ou soit cela demande trop de temps.

Re,

Si tu veux terminer par un tri, inutile de s'embêter à insérer.

Les noms doivent s'ajouter à la fin dans Janvier.

Je recopie les formules de la ligne au-dessus, pas la peine de surcharger le classeur avec des formules inutiles. Par contre la mise en forme est sensée être faite.

Tant que j'y étais j'ai ajouté le changement de nom, qui se répercute sur toutes les feuilles et fini par un tri aussi.

Ajouter dans le module Janvier :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim derlig As Long, tmp As String, mois As String
    Dim sh As Worksheet
    mois = "Janvier,Février,Mars,Décembre"
    derlig = Cells(Rows.Count, "A").End(xlUp).Row
    If Target.Row <> derlig Then
        ' modif nom
        modifNom Target.Row, Target.Value, mois
        Exit Sub
    End If
    tmp = Target
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Undo
    If Target = "" Then
        'nouveau nom
        For Each sh In Worksheets
            If InStr(mois, sh.Name) > 0 Then
                sh.Select
                sh.Cells(Target.Row, "A") = tmp
                ' étendre formules
                sh.Cells(Target.Row - 1, "AG").Resize(, 8).AutoFill Destination:=sh.Cells(Target.Row - 1, "AG").Resize(2, 8), Type:=xlFillDefault
                ' trier
                sh.Range("7:" & derlig).Sort Key1:=sh.Range("A:A"), Order1:=xlAscending, Header:=xlNo
            End If
        Next sh
    Else
        'modif nom
        Target = tmp
        modifNom Target.Row, tmp, mois
    End If
    Sheets("Janvier").Activate
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

Sub modifNom(lig As Long, nom As String, mois As String)
    Dim sh As Worksheet, derlig As Long
    derlig = Cells(Rows.Count, "A").End(xlUp).Row
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    For Each sh In Worksheets
        If InStr(mois, sh.Name) > 0 Then
            sh.Activate
            sh.Cells(lig, "A") = nom
            ' trier
            sh.Range("7:" & derlig).Sort Key1:=sh.Range("A:A"), Order1:=xlAscending, Header:=xlNo
        End If
    Next sh
    Sheets("Janvier").Activate
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

Je te laisse faire des tests plus complets.

eric

edit: je viens de voir que j'ai oublié la feuille Recap. Je pense que tu n'auras pas de mal à l'ajouter en te basant sur le modèle.

Désoler pour ma réponse tardive car j'ai eu des problème de connexion.

Déjà tu as fait du bon boulot.

Je t'en remercie beaucoup.

Pourrai ont faire le tri sur des cellules bien définie ? par exemples de a9 a a29.

Je teste le reste, mais encore merci de te pencher dessus.

Pourrai ont faire le tri sur des cellules bien définie ? par exemples de a9 a a29.

Je ne vois pas trop l'intêret de trier sur autre chose que les noms réellement existants mais bon...

Dans :

' trier

sh.Range("7:" & derlig)

tu mets ce qui t'interesse :

sh.Range("9:29")

eric

En fait la listes des noms ne sont pas en continue car il y a plusieurs affectation.

Voir photo.

Et encore merci pour le travail effectuer.

capture

En fait la listes des noms ne sont pas en continue car il y a plusieurs affectation.

Je ne vois pas ce que tu veux dire mais tu mets tes n° de lignes comme je t'ai indiqué.

eric

En tout cas sa marche.

Merci pour tous.

Je met en résolut.

Je vient de remarquer un problème.

Quand je double clic pour avoir la barre des congés et que j’essaie de remplir d'autre colonne que la A cela m inscris dans la colonne A le type d’absence?

Voir le fichier.

8planning-forum.zip (72.02 Ko)

Je crois que j'ai compris.

Si tu veux laisser grouper par service ta base ne s'y prête pas.

Il faudrait ajouter une colonne Service, et trier l'ensemble selon service-nom.

eric

Peut être.

Ou alors au lieux de mettre le code dans la feuille Janvier, je le met dans une autre feuilles nommée modèle.

Comme cela je n’ai pas a y insérer le type de congés.(car ton code marche bien)

Je te répondais à ton problème de tri, je n'avais pas vu ton autre message.

Quand je double clic pour avoir la barre des congés et que j’essaie de remplir d'autre colonne que la A cela m inscris dans la colonne A le type d’absence?

J'ai oublié une ligne.

A ajouter au début du worksheet_Change :

if target.Column<>1 then exit sub

eric

Tout simplement parfait.

Bonne soiré et un grand merci.

Rechercher des sujets similaires à "insertion lignes"