je viens a nouveau vers vous pour résoudre un problème sue mon fichier
si par le formulaire je sélectionne un agrément et que je le supprime, la ligne correspondante s'efface sur la feuill1 mais laisse la ligne vide il n'y a pas de décalage des données vers le haut et sur la feuill3 la ligne correspondante à l'agrément supprimé , n'est pas supprimé.
Re : décalagede lignes lors de la suppression par userform
Bonsoir,
Dans la macro Cmdsupprimer_Click() j'ai remplacé le clearcontents des deux lignes .Range("B" & Me.LBnoagrement.ListIndex + 3 & ":G" & Me.LBnoagrement.ListIndex + 3).ClearContents par .entirerow.delete shift:=xlshiftdown
Par contre, je ne sais pas pour vous, mais quand j'exécute la macro j'ai l'erreur de compilation suivante : "Projet ou bibliothèque introuvable" ce qui arrête la macro sur la procédure workbook_Open() et empêche donc la suppression de la ligne sur la feuille 3.
Re : décalagede lignes lors de la suppression par userform
En ce qui concerne la référence manquante, j'ai été regardé dans le menu référence mais j'ai rien remarqué de spécial.
Sinon pour revenir à ton problème, je pense que la source réside dans la macro événementielle worksheet_change() puisque j'ai dû contourner le problème de l'erreur de compilation en mettant tout le code de cette macro sous forme de commentaire.
Après ça j'ai lancé la macro et de mon côté ça a bien supprimé la ligne dans les deux feuilles de calcul ce que tu peux vérifier dans le fichier joint à ce message.
Re : décalagede lignes lors de la suppression par userform
Bonjour
désolé de n'avoir pas pu répondre avant, j'étais absent ce week end .
Je viens d'essayer ton fichier effectivement , la ligne est bien supprimée sur les 2 feuilles , mais ça supprime la ligne entièrement ainsi que les données qui sont sur cette même ligne. Si tu regarde a droite des données ont été supprimées et mon tableau passe de la ligne 301 à la 300 , c'est pour cela qu'il faut utiliser le fonction effacer;
Sinon pour revenir à ton problème, je pense que la source réside dans la macro événementielle worksheet_change() puisque j'ai dû contourner le problème de l'erreur de compilation en mettant tout le code de cette macro sous forme de commentaire.
Re : décalagede lignes lors de la suppression par userform
Bonjour
je joints mon dernier fichier, effectivement , si on met la macro en commentaire les lignes s'efface correctement
Code:
'Private Sub Worksheet_Change(ByVal Target As Range)
'If Application.Intersect(Target, Columns(5)) Is Nothing Then Exit Sub
'If Target - Date > Cells(2, 15) Then Cells(Target.Row, 8) = ""
'End Sub
Re : décalagede lignes lors de la suppression par userform
Proposition de solutions liée au problème de ta macro événementielle. Ce que je fais c'est que je la désactive temporairement en inscrivant dans la macro Cmdsupprimer_Click Application.EnableEvents = false puis juste après la suppression je la réactive en inscrivant Application.EnableEvents = true
Code:
Application.EnableEvents = False
With WS
.Range("B" & Me.LBnoagrement.ListIndex + 3 & ":H" & Me.LBnoagrement.ListIndex + 3).Delete
End With
Set WS = ThisWorkbook.Worksheets("Feuil3")
With WS
.Range("B" & Me.LBnoagrement.ListIndex + 3 & ":G" & Me.LBnoagrement.ListIndex + 3).Delete
End With
Application.EnableEvents = True
D'après ce que j'ai pu comprendre de la logique de fonctionnement de la macro, je pense que cette opération ne devrait pas affecter ou fausser les résultats sur ta feuille de calcul.
Re : décalagede lignes lors de la suppression par userform
Merci Romain Ca progresse bien
il y a un soucis maintenant au niveau de la colonne H de la feuille 3 , si je supprime une ligne celle ci est bien supprimée mais ça supprime également une cellule dans la colonne H "REF"
Code:
Set WS = ThisWorkbook.Worksheets("Feuil3")
With WS
.Range("B" & Me.LBnoagrement.ListIndex + 3 & ":G" & Me.LBnoagrement.ListIndex +
Re : décalagede lignes lors de la suppression par userform
En effet, il fallait remplacer le ":G" par ":H" car la suppression des données en F et G qui servent à renseigner les arguments de la fonction crée une erreur au niveau de la formule.
J'ai fais la correction dans le code de la macro.
Re : décalagede lignes lors de la suppression par userform
Maintenant je trouve un autre problème je pense que se sera le dernier
avec le fichier joint lorsque je supprime un agrément ça supprime bien la ligne correspondante en feuille 1 et 3, seulement ça me supprime la formule en colonne E feuille 3 si j'ajoute un agrément avec la formulaire la cellule E Feuille 3 correspondant a l'enregistrement est vide , normal la formule a disparue
comment faire pour supprimer une ligne sans supprimer les formules ?
Re : décalagede lignes lors de la suppression par userform
J'ai procédé à la correction dans le code de la macro Tri_agrements.
Code:
With ThisWorkbook.Worksheets("Feuil3")
.Unprotect "281"
xlgn = .Range("B" & .Rows.Count).End(xlUp).Row
Set rng = .Range("B3:D" & xlgn)
rng.Sort Key1:=.Range("B3"), Order1:=xlAscending
End With
Application.ScreenUpdating = True
Au niveau de la ligne Set Rng, le "D" remplace le "G". En effet il est inutile de faire un tri sur une plage de cellules contenant des formules surtout si la dite formule contient une référence à une cellule située dans une autre feuille du classeur car la référence de la cellule n'est pas modifiée lors du tri contrairement aux références des cellules de la feuille dans laquelle est tapée la formule.
Re : décalagede lignes lors de la suppression par userform
Merci Romain
toujours des problèmes de trie lors de la suppression d'une ligne , il ne faut pas effacer les données des cellule de la colonne E et il faut trier les colonnes F et G en s'arretant a D ca ne fonctionne pas
je pense que c'est lorsque l'on rajoute des données
Dans le code j'ai aussi remis le tri sur les colonnes F et G. Et enfin j'ai supprimé les formules de la colonne E de la feuille 3 par un copier coller de valeurs, la ligne de code que j'ai mis au-dessus jouera le même rôle que la formule.