insertion et suppression ligne dans un tableau

khephrens

XLDnaute Occasionnel
onjour
je suis en train de créer une petite application me permettant de gérer le planning des absences d'une 50aine de personnes.

j'ai un fichier avec 12 onglets correspondants aux douze mois de l'année.
Succinctement, sur chacune des douze feuilles, il y a le même tableau avec en colonne (a:a) le nom des personnes et en ligne 1 les jours correspondant au mois de l’onglet.

j'aimerais pouvoir ajouter une ligne a ce tableau avec en colonne a:a le nom de la personne nouvelle. j'aimerais que l'insertion de la ligne vierge se fasse alphabétiquement en fonction du nom de la personne et respecte le format des cellules du tableau
est il possible d'ajouter cette personne entre une date de début à une date de fin de période ?
est il possible enfin de supprimer une personne du tableau a partir d'une date donnée en cours de mois
merci de votre aide
khephrens
 

khephrens

XLDnaute Occasionnel
Re : insertion et suppression ligne dans un tableau

bonjour skoobi
c'est genial ca fonctionne parfaitement bien..merci bcp.. je vais recopier les macro sur les autres onglets..
j e vais reflechir sur une feuille statistique ..
penses tu qu'a partir du planning mensuel on puisse prerenseigner un tableau journalier ?
je reflechis egalement sur un planning multi activité journalier previsionnel . je suis en train de preparer une maquette. quand elle sera prete pourrais je de l'envoyer et te demander des conseils?
amicalement
khephrens :)
 

skoobi

XLDnaute Barbatruc
Re : insertion et suppression ligne dans un tableau

Re bonjour khephrens,
tant mieux:);)

"penses tu qu'a partir du planning mensuel on puisse prerenseigner un tableau journalier ?"
Je pense que oui, beaucoup de choses peuvent être faites avec excel+VBA.

"quand elle sera prete pourrais je de l'envoyer et te demander des conseils?"
Bien sur, ce sera avec plaisir, dans la mesure de mes compétences....

Bonne après-midi:)
 

khephrens

XLDnaute Occasionnel
Re : insertion et suppression ligne dans un tableau

re skoobi

je me suis permis de t'envoyer un mail avec le zip du planning + des explications car j'ai un pti probleme .
brievement ,j'ai ajouté des boutons au planning et depuis le tri par colonne ne se fait plus!! je ne comprends pas ....!!! peux tu regarder ?
merci
khephrens :)
 

skoobi

XLDnaute Barbatruc
Re : insertion et suppression ligne dans un tableau

Re,
bizzare:confused: car chez moi ça marche....
Il arrive défois de devoir fermer Excel puis de l'ouvrir à nouveau pour que tous rentre dans l'ordre.
Essaye (sans garantie).
Sinon je voie pas.....
 

skoobi

XLDnaute Barbatruc
Re : insertion et suppression ligne dans un tableau

Khephrens à écrit:

Bonjour skoobi

Je suis resté muet pendant quelques temps car j’essayais de fignoler mon planning de congés selon mes besoins..

Je pense que le planning congés v2 fonctionne bien .. Cependant lorsque je securise une feuille de maniere a n’avoir acces qu’a certaine cellule ca ne fonctionne pas !!!! les macros ne fonctionnent plus ??? peux tu m’aider ?

J’ai fait par ailleurs une copie du plannning congesv2 que j’ai nommé plannning congesv2 ass sup et adapté pour un autre type de personnel ( encadrement)… j’ai changé les parametres..mais lorsque que j’essaie d’ajouter un nom la macro « ajout » ne fonctionne pas !!!! je ne vois pas d’ou peut venir le probleme.. peux tu regarder si tu as le temps !!et m’expliquer …

Je commence a comprendre certaines choses mais ce n’est pas facile..j’ecoute tes conseils et j’avance doucement.

Si tu n’as pas le temps ce n’est pas grave .. je te remercie déjà pour tout ce que tu as fait pour me faire progresser.

Bon week end

khephrens

Re Khephrens,

pour ce qui est de la protection d'une feuille, il faut que tu récupères le code VBA via l'enregistreur de macro pour l'ajout de la protection et la déprotection.
Ensuite to colles la partie "déprotection" au début de la macro qui pose problème et la partie protection à la fin.

Pour ce qui est de l'erreur sur le 2e fichier, le problème vient de la ligne 128 du code de l'userform (pour la trouver, regarde la zone se trouvant à coté du "?" aide dans la barre d'outil).

Code:
der_lig = .Range("C9").End(xlDown).Row
que tu dois remplacer par ceci:

Code:
der_lig = .Range("C65536").End(xlUp).Row
End: correspond à la touche Fin du clavier
xlUp: touche flèche haut
xlDown: touche flèche bas
Pour comprendre, sélectionne la cellule C9 puis fin - bas regarde ce qui se passe de même avec la cellule C65536, tu la sélectionne puis fin haut.

Je vois que tu as changé le nom des contrats pour ce 2e fichier. Dans ce cas il faut que tu changes également le nom (name) des "OptionButton" titulaire cdd et interim par les nouveaux ;)

A te relire
 

khephrens

XLDnaute Occasionnel
Re : insertion et suppression ligne dans un tableau

bonsoir skoobi
j'ai effectué les modifications selon tes indications.. mai sil ya une chose que je ne m'explique pas!!

comment se fait il que sur le premier fichier la ligne de code :.Range("C9").End(xlDown).Row fonctionne sans aucun probleme et que dans le second fichier il faille la remplacer par : .Range("C65536").End(xlUp).Row

pour moi c'est un mystere ca r la structure du fichier est identiques seuls les noms changent!!! je ne comprends pas trop!!

pour ce qui est de la protection de la feuille j'ai pas bien compris ce que tu me conseilles!! je dois créer les macros verrouillage et deverrouillage avec l'enregistreur et recuperer le code que j'insere en debut et fin dans la macro ajout ? est ca??
je suis vraiment nul :)
khephrens
 

skoobi

XLDnaute Barbatruc
Re : insertion et suppression ligne dans un tableau

Re,

comment se fait il que sur le premier fichier la ligne de code :.Range("C9").End(xlDown).Row fonctionne sans aucun probleme et que dans le second fichier il faille la remplacer par : .Range("C65536").End(xlUp).Row
Le problème c'est que si il n'y a personne dans le mois la macro affecte la dernière ligne de la feuille (65536) à la variable "der_lig" pour
Code:
der_lig = .Range("C9").End(xlDown).Row
.
Plus loin, tu peux voir
Code:
.Rows(der_lig + 1).Insert
et là forcément ça plante vu que excel est limité à 65536 lignes....

pour ce qui est de la protection de la feuille j'ai pas bien compris ce que tu me conseilles!! je dois créer les macros verrouillage et deverrouillage avec l'enregistreur et recuperer le code que j'insere en debut et fin dans la macro ajout ? est ca??

Oui c'est tout à fait ça ;) car si tu demandes par exemple à la macro d'écrire qqchse dans une cellule qui est protégé et bien.....
De ce fait, il faut déverrouiller la feuille au début du code et verrouiller de nouveau à la fin.

Espérant avoir éclairé ta lanterne ;)
 

khephrens

XLDnaute Occasionnel
Re : insertion et suppression ligne dans un tableau

bonjour skoobi
oui je pense avoir compris .. je vais essayer de faire ca tout seul!! ca risque d'etre pas facile mais c'est comme ca qu'on avance!!
je t'enverrai le planning car je n'arrive pas a le compresser suffisamment pour le mettre a dispo de ceux que ca interesseraient!!! comment faire ???
merci de ton aide skoobi ..chapeau bas!! :)
 

skoobi

XLDnaute Barbatruc
Re : insertion et suppression ligne dans un tableau

re,
je vais essayer de faire ca tout seul!! ca risque d'etre pas facile mais c'est comme ca qu'on avance!!
si t'y arrive pas il y a pas de problème pour un coup de pouce ;)
je n'arrive pas a le compresser suffisamment pour le mettre a dispo de ceux que ca interesseraient!!! comment faire ???
2 solutions: tu deviens supporter XLD :D ou tu mets le fichier sur un site gratuit d'ébergement de fichier, ne me demande pas, j'en connais pas, j'ai déjà vu par-ci par là sur le forum mais je ne m'en souviens plus désolé :(
 

khephrens

XLDnaute Occasionnel
Re : insertion et suppression ligne dans un tableau

re bonsoir skoobi

je n'ai pas reussi à inserer les parties macro verrouillage et macro deverrouillage au debut et à la fin de la macro "ajout" du planning.. .... ca bug !! dois je te renvoyer le fichier par mail skoobi?

un autre petit probleme a solutionner en piece jointe !! pour toi ce doit etre tres facile!

le tableau a1:c9 contient des cellules de differentes couleurs correspondant à des activités.
j'aimerais ,en cliquant sur sur "stats couleur" , avoir le comptage par couleur dans les cellules d12,d14,d16,d18,d20 .
meme chose en cliquant sur "stats texte" avoir le comptage en fonction du texte dans les cellules e12,e14,e16,e18,e20.
peut on avoir ce resultat en procedure evenentielle??
j'espere avoir été clair dans mes explications!!
merci pour ton aide
khephrens :)
 

Pièces jointes

  • comptage par couleur.xls
    31 KB · Affichages: 49

skoobi

XLDnaute Barbatruc
Re : insertion et suppression ligne dans un tableau

Re Khephrens,

je n'ai pas reussi à inserer les parties macro verrouillage et macro deverrouillage au debut et à la fin de la macro "ajout" du planning.. .... ca bug !! dois je te renvoyer le fichier par mail skoobi?

envoie moi plutot la macro enregistrée pour le verrouillage (n'oublis pas les options choisis) et le mot de passe éventuel.

et pour le comptage par couleur (je te laisse ajouter celui par texte à la suite de celui-ci ;)):

Code:
Private Sub Worksheet_Activate()
Dim Cellule As Range
Dim total As Variant
For Each Cellule In Range("a1:c9")
    If Cellule.Interior.ColorIndex = 3 Then 'Rouge
        total1 = total1 + 1
    ElseIf Cellule.Interior.ColorIndex = 2 Then 'Rouge
        total2 = total2 + 1
    ElseIf Cellule.Interior.ColorIndex = 5 Then 'Rouge
        total3 = total3 + 1
    ElseIf Cellule.Interior.ColorIndex = 39 Then 'Rouge
        total4 = total4 + 1
    ElseIf Cellule.Interior.ColorIndex = 36 Then 'Rouge
        total5 = total5 + 1
    End If
Next
Range("d12") = total1
Range("d14") = total2
Range("d16") = total3
Range("d18") = total4
Range("d20") = total5

' ici le code pour le texte
For Each Cellule In Range("a1:c9")
    If Cellule.Value = "abs" Then
'.............
'............
'............
End Sub
A mettre dans le code de la feuille (s'execute lors de l'activation de la feuille).
 
Dernière édition:

khephrens

XLDnaute Occasionnel
Re : insertion et suppression ligne dans un tableau

bonjour skoobi

le code pour les vouleurs fonctionne bien pour le comptage des couleurs sauf pour les cellules qui n'ont pa sde couleurs??(code couleur : 0 )
j'ai associé la macro a un bouton car en evenemenielle ca ne marche pas!!
Sub Bouton12_QuandClic()
Dim Cellule As Range
Dim total As Variant
For Each Cellule In Range("a1:c9")
If Cellule.Interior.ColorIndex = 3 Then 'Rouge
total1 = total1 + 1
ElseIf Cellule.Interior.ColorIndex = 0 Then 'pas de couleur
total2 = total2 + 1
ElseIf Cellule.Interior.ColorIndex = 32 Then 'bleu
total3 = total3 + 1
ElseIf Cellule.Interior.ColorIndex = 39 Then 'violet
total4 = total4 + 1
ElseIf Cellule.Interior.ColorIndex = 36 Then 'jaune

total5 = total5 + 1
End If
Next
Range("d12") = total1
Range("d14") = total2
Range("d16") = total3
Range("d18") = total4
Range("d20") = total5

' ici le code pour le texte
'For Each Cellule In Range("a1:c9")
'If Cellule.Value = "abs" Then
'.............
'............
'............
End Sub


par ailleurs pour ce qui est de l'insertion vrrouillage deverrouillage en debut et fin d ela macro ajoutj'ai pris le code suivant: (ans mot de passe)

ActiveSheet.Unprotect 'deverrouillage
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'verrouillage

j'avoue que je suis largué là:) je vais acheter ce matin VBA pour les nuls :)
a plus tard skoobi
khephrens :)
 

skoobi

XLDnaute Barbatruc
Re : insertion et suppression ligne dans un tableau

Re,

pour le verrouillage déverrouillage, fait les ajouts en rouge dans les macros suivantes:

Code:
[B]Private Sub ajout_Click()[/B]
 
If moisdu.Value = "" Or moisau.Value = "" Then
    MsgBox "Choisir un mois"
    Exit Sub
ElseIf titulaire.Value = False And cdd.Value = False And interim.Value = False Then
    MsgBox "Choisir un contrat"
    Exit Sub
End If
'effectue une boucle de par exemple janvier à juin si janvier est dans le menu déroulant
'"de" et juin dans le menu déroulant "à"
For nbre = Sheets(moisdu.Value).Index To Sheets(moisau.Value).Index
   trouve = False
    With Sheets(nbre)
[COLOR=lime][B] [COLOR=red]      .Unprotect 'deverrouillage[/COLOR][/B][/COLOR]
        For Each cel_prenom In .Range(.Range("C9"), .Range("C65536").End(xlUp))
'ici une vériication est faite afin de ne pas créer la personne 2x dans le mois
            If cel_prenom.Value = prenom.Value And cel_prenom.Offset(0, 1).Value = nom.Value Then
                MsgBox prenom.Value & " " & nom.Value & " est déjà dans le mois " & Sheets(nbre).Name
                trouve = True
                Exit For
            End If
        Next
'si cette personne n'est pas dans le mois, l'ajoute et fait le tri
        If Not trouve Then
            der_lig = .Range("C9").End(xlDown).Row
            der_col = .Range("IV5").End(xlToLeft).Column
            .Rows(der_lig + 1).Insert
            .Cells(der_lig + 1, 3).Value = prenom.Value
            .Cells(der_lig + 1, 4).Value = nom.Value
            If titulaire.Value = True Then
                .Cells(der_lig + 1, 2).Value = "titu"
            ElseIf cdd.Value = True Then
                .Cells(der_lig + 1, 2).Value = "cdd"
            ElseIf interim.Value = True Then
                .Cells(der_lig + 1, 2).Value = "interim"
            End If
            .Range(.Range("B10"), .Cells(der_lig + 1, der_col)).Sort Key1:=.Range("D10"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        End If
[COLOR=red] [B]       .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'verrouillage[/B][/COLOR]    End With
Next nbre
Sheets(moisdu.Value).Activate
 
Unload UserForm1
End Sub
[B]Private Sub supprime_Click()[/B]
If moisdu.Value = "" Or moisau.Value = "" Or nom.Value = "" Or prenom.Value = "" Then
    MsgBox "Choisir un mois et une personne"
    Exit Sub
End If
For nbre = Sheets(moisdu.Value).Index To Sheets(moisau.Value).Index
    With Sheets(nbre)
[B][COLOR=red]       .Unprotect 'deverrouillage[/COLOR][/B]
        For Each cel_prenom In .Range(.Range("C9"), .Range("C65536").End(xlUp))
'si la personne est trouvé dans le mois, elle est supprimé sinon ne fait rien
            If cel_prenom.Value = prenom.Value And cel_prenom.Offset(0, 1).Value = nom.Value Then
                cel_prenom.EntireRow.Delete
                Exit For
            End If
        Next
[B][COLOR=red]      .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'verrouillage[/COLOR][/B]
    End With
Next
Sheets(moisdu.Value).Activate
Unload UserForm1
End Sub

sauf pour les cellules qui n'ont pa sde couleurs??(code couleur : 0 )
remplace 0 par 2 ou -4142 (à tester).
je vais acheter ce matin VBA pour les nuls
Ca va beaucoup t'aider tu verras...

j'ai associé la macro a un bouton car en evenemenielle ca ne marche pas!!
En reglera ce problème en temps voulu, une chose après l'autre....
 
Dernière édition:

khephrens

XLDnaute Occasionnel
Re : insertion et suppression ligne dans un tableau

RE SKOOBI

j'ai ajouté le slignes sur le code "ajout" et "supprime" mais ce ne fonctionne pas!!!
If Not trouve Then
der_lig = .Range("C65536").End(xlUp).Row
der_col = .Range("IV5").End(xlToLeft).Column
.Rows(der_lig + 1).Insert
.Cells(der_lig + 1, 3).Value = prenom.Value
.Cells(der_lig + 1, 4).Value = nom.Value If ru.Value = True Then
.Cells(der_lig + 1, 2).Value = "RU"

le bug se positionne sur la ligne en rouge!!??

pour ce qui est du code -4142 ca fonctionne :) les cellules blanches sont comptabilisées..
merci
khephrens:)

ca avance :) sourire
 

skoobi

XLDnaute Barbatruc
Re : insertion et suppression ligne dans un tableau

Re,
c'est sur
Code:
If ru.Value = True Then
que ca plante car j'ai testé le 2e fichier (c'est bien de celui-là que tu parles).
Il faut non seulement penser à changer le nom du contrat dans la présentation du userform mais également dans le nom (name), pour ce faire tu affiches le userform dans VBE, puis tu sélectionnes le "contrat" et dans les propriétés (acces en appuyant sur F2) tu changes le nom (name) que tu nommes ru.
 

Discussions similaires

Statistiques des forums

Discussions
312 752
Messages
2 091 666
Membres
105 039
dernier inscrit
rouibi