Je suis débutant excel, je me débrouille pas mal mais là je suis vraiment coincé.
J'ai un classeur excel avec a l'intérieur 13 feuilles. les 12 premières feuilles sont les 12 mois de l'année et la 13ème c'est comme un recap pour chaque employé.
Il faut noter que chaque employé garde la même place (ligne) sur chaque feuille comme vous pourrez le constater (cela a cause des formules pour le recap).
Alors ce que je veux c'est faire en sorte que lorsque j'ajoute une ligne dans une feuille, que la même ligne soit ajoutée sur toutes les autres (que ca soit en milieu ou en fin de liste).
Exemple : si j'ajoute EMPLOYE 6 sur la feuille Janvier, je veux que EMPLOYE 6 soit automatiquement ajouté aux autres feuilles également et cela a la même place (ligne).
Là c'est parfait ça marche super bien ! Je me demandais si je pouvais regarder et bidouiller pour la suppression, j'espere que c'est quasiment le même procédé ! Encore merci Chris tu me sauves !
A noter qu'en entreprise, en principe on n'efface pas l'historique...
VB:
Sub Suppression_ligne()
Dim Trouve
Dim y As Long
Question = InputBox("Quel nom voulez-vous supprimer ?")
If Question = "" Then Exit Sub
With Sheets("EMPLOYES").ListObjects(1)
Set Trouve = .ListColumns(1).Range.Find(Question)
If Not Trouve Is Nothing Then
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
y = Trouve.Row - .Range.Row
.ListRows(y).Delete
.ListColumns(5).DataBodyRange.Resize(, 5).Formula = ""
.ListColumns(5).DataBodyRange.Resize(, 5).Formula = "=SUM('Janvier:Décembre'!RC[29])"
For Each f In ActiveWorkbook.Sheets
If f.Name <> "EMPLOYES" Then
With f.ListObjects(1)
.ListRows(y).Delete
End With
End If
Next f
Else
MsgBox "Nom introuvable"
End If
End With
Application.Calculation = xlCalculationAutomatic
End Sub
A noter qu'en entreprise, en principe on n'efface pas l'historique...
VB:
Sub Suppression_ligne()
Dim Trouve
Dim y As Long
Question = InputBox("Quel nom voulez-vous supprimer ?")
If Question = "" Then Exit Sub
With Sheets("EMPLOYES").ListObjects(1)
Set Trouve = .ListColumns(1).Range.Find(Question)
If Not Trouve Is Nothing Then
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
y = Trouve.Row - .Range.Row
.ListRows(y).Delete
.ListColumns(5).DataBodyRange.Resize(, 5).Formula = ""
.ListColumns(5).DataBodyRange.Resize(, 5).Formula = "=SUM('Janvier:Décembre'!RC[29])"
For Each f In ActiveWorkbook.Sheets
If f.Name <> "EMPLOYES" Then
With f.ListObjects(1)
.ListRows(y).Delete
End With
End If
Next f
Else
MsgBox "Nom introuvable"
End If
End With
Application.Calculation = xlCalculationAutomatic
End Sub
Eh bien j'ai copié et collé tout la liste des employés que j'ai déjà, jusque là tout allais bien.
Mais maintenant, quand je fais une insertion via le bouton, je saisie le nom de l'employé, je reçois un message disant que "la ligne ne correspond pas a l'index" (Je ne sais vraiment pas ce que ça signifie) mais par contre a ajoute l'employé en tête de liste en copiant la mise en forme des en-têtes.
Pareil pour la suppression je reçois un message disant "Erreur 9 debogage" (un truc comme ça) mais la suppression s'effectue également.
Je t'envoie le fichier actuel avec la liste des employés et tout.
Si ta liste n'est pas classée au départ l'insertion se fait un peu au hasard
Quand aux messages d'erreurs cela est du à une feuille supplémentaire par rapport à ce qui a été fourni initialement, feuille qui ne correspond pas aux autres.
On le dit et le répète : l'exemple doit être représentatif... sinon on bosse pour rien
Si ta liste n'est pas classée au départ l'insertion se fait un peu au hasard
Quand aux messages d'erreurs cela est du à une feuille supplémentaire par rapport à ce qui a été fourni initialement, feuille qui ne correspond pas aux autres.
On le dit et le répète : l'exemple doit être représentatif... sinon on bosse pour rien