Supprimer une ligne via un userform
Résolu/Fermé
Remi2236
Messages postés
86
Date d'inscription
jeudi 10 septembre 2015
Statut
Membre
Dernière intervention
22 mai 2024
-
24 sept. 2018 à 11:56
Remi2236 Messages postés 86 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 22 mai 2024 - 26 sept. 2018 à 08:17
Remi2236 Messages postés 86 Date d'inscription jeudi 10 septembre 2015 Statut Membre Dernière intervention 22 mai 2024 - 26 sept. 2018 à 08:17
A voir également:
- Supprimer une ligne via un userform
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Aller à la ligne excel - Guide
- Impossible de supprimer un fichier - Guide
- Partager photos en ligne - Guide
5 réponses
thev
Messages postés
1927
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
29 décembre 2024
692
Modifié le 24 sept. 2018 à 13:37
Modifié le 24 sept. 2018 à 13:37
Bonjour,
ci-dessous correction du code
NB :
1- votre numéro d'ordre est numérique mais celui saisi dans le formulaire est au format texte, il faut donc le convertir
2- erreur sur la propriété "Rows" et non "Row"
3- mot de passe à définir : remplacer les "XXXX"
4- nul besoin de répéter le formulaire, l'objet "Me" le représente
5- pour une meilleure lisibilité du code, procéder à son indentation, c.a.d. aligner correctement les instructions with, for, if.
ci-dessous correction du code
Private Sub CommandButton1_Click() Dim i As Integer Const mot_de_passe As String = "XXXXX" With ThisWorkbook.ActiveSheet For i = Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1 If .Range("A" & i).Value = Val(TextBox1) Then .Unprotect mot_de_passe .Rows(i).Delete .Protect mot_de_passe End If Next i End With Me.Hide End Sub
NB :
1- votre numéro d'ordre est numérique mais celui saisi dans le formulaire est au format texte, il faut donc le convertir
2- erreur sur la propriété "Rows" et non "Row"
3- mot de passe à définir : remplacer les "XXXX"
4- nul besoin de répéter le formulaire, l'objet "Me" le représente
5- pour une meilleure lisibilité du code, procéder à son indentation, c.a.d. aligner correctement les instructions with, for, if.
thev
Messages postés
1927
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
29 décembre 2024
692
Modifié le 24 sept. 2018 à 16:03
Modifié le 24 sept. 2018 à 16:03
Bonjour,
Assurez--vous que l'événement "Change" ne porte que sur une seule cellule.
ci-dessous correction du code :
Pour le numéro d'ordre, modifier votre formule ainsi
=SI(NON(ESTVIDE(C2));LIGNE(C2)-1;"")
Assurez--vous que l'événement "Change" ne porte que sur une seule cellule.
ci-dessous correction du code :
Private Sub Worksheet_Change(ByVal Target As Range) If Not Application.Intersect(Target, Range("D2:E3627")) Is Nothing And Target.Count = 1 Then If Not IsEmpty(Target) Then Application.EnableEvents = False Target.Value = UCase(Target.Value) Application.EnableEvents = True End If End If End Sub
Pour le numéro d'ordre, modifier votre formule ainsi
=SI(NON(ESTVIDE(C2));LIGNE(C2)-1;"")
Remi2236
Messages postés
86
Date d'inscription
jeudi 10 septembre 2015
Statut
Membre
Dernière intervention
22 mai 2024
1
24 sept. 2018 à 16:47
24 sept. 2018 à 16:47
Merci, pour la suppression ça marche bien. Mais du coup ça me met encore une autre erreur :
"Erreur 1404 : erreur définit par l'application ou par l'objet."
Le code pour faire en sorte que le fond des cellules des colonnes C à G soit en vert par rapport à la cellule active affiche en surbrillance :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set champ = Range("C:G")
champ.FormatConditions.Delete => ligne en surbrillance
If Not Intersect(champ, Target) Is Nothing Then
If Target.Count = 1 Then
Intersect(Target.EntireRow, champ).FormatConditions.Add Type:=xlExpression, Formula1:="VRAI"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).Interior.Color = RGB(0, 255, 0)
End If
End If
End Sub
De plus, la technique pour que le numéro d'ordre reprenne fonctionne mais j'ai une autre question car du coup j'ai plusieurs mois qui se suivent et la première ligne du mois de février va chercher le dernier chiffre et ajoute +1 (ce qui donne par exemple qu'au mois de février ce serait le 5ème consultant) mais avec votre formule la ligne 2 du mois de février devient le numéro 2 puis 3...et non 6 par rapport à l'exemple.
https://www.cjoint.com/c/HIyoVi3wLlT
Vous auriez une solution ?
Cordialement,
Rémi
"Erreur 1404 : erreur définit par l'application ou par l'objet."
Le code pour faire en sorte que le fond des cellules des colonnes C à G soit en vert par rapport à la cellule active affiche en surbrillance :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set champ = Range("C:G")
champ.FormatConditions.Delete => ligne en surbrillance
If Not Intersect(champ, Target) Is Nothing Then
If Target.Count = 1 Then
Intersect(Target.EntireRow, champ).FormatConditions.Add Type:=xlExpression, Formula1:="VRAI"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).Interior.Color = RGB(0, 255, 0)
End If
End If
End Sub
De plus, la technique pour que le numéro d'ordre reprenne fonctionne mais j'ai une autre question car du coup j'ai plusieurs mois qui se suivent et la première ligne du mois de février va chercher le dernier chiffre et ajoute +1 (ce qui donne par exemple qu'au mois de février ce serait le 5ème consultant) mais avec votre formule la ligne 2 du mois de février devient le numéro 2 puis 3...et non 6 par rapport à l'exemple.
https://www.cjoint.com/c/HIyoVi3wLlT
Vous auriez une solution ?
Cordialement,
Rémi
thev
Messages postés
1927
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
29 décembre 2024
692
Modifié le 24 sept. 2018 à 19:15
Modifié le 24 sept. 2018 à 19:15
Bonjour,
Je vous propose ce code car la suppression du format conditionnel lorsqu'il n'existe pas, provoque une erreur.
Ici, l'objet "Me" représente la feuille car le code est rattaché à la feuille.
et cette formule pour février :
=SI(NON(ESTVIDE(C2));MAX(Janvier!A:A)+LIGNE(C2)-1;"")
Je vous propose ce code car la suppression du format conditionnel lorsqu'il n'existe pas, provoque une erreur.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim champ As Range Set champ = Me.Range("C:G") On Error Resume Next If Not Intersect(champ, Target) Is Nothing And Target.Count = 1 Then Intersect(Target.EntireRow, champ).FormatConditions.Delete Intersect(Target.EntireRow, champ).FormatConditions.Add Type:=xlExpression, Formula1:="VRAI" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority Selection.FormatConditions(1).Interior.Color = RGB(0, 255, 0) End If End Sub
Ici, l'objet "Me" représente la feuille car le code est rattaché à la feuille.
et cette formule pour février :
=SI(NON(ESTVIDE(C2));MAX(Janvier!A:A)+LIGNE(C2)-1;"")
Remi2236
Messages postés
86
Date d'inscription
jeudi 10 septembre 2015
Statut
Membre
Dernière intervention
22 mai 2024
1
25 sept. 2018 à 09:14
25 sept. 2018 à 09:14
Bonjour,
Merci pour cette réponse, c'est presque parfait !
Il y a juste un dernier problème, c'est que je voudrais que lorsque je clique sur une cellule (admettons C2 qui devient la cellule active), cela colore en vert la ligne de la cellule active entre la colonne C et la colonne G (dans l'exemple C2 à G2) mais que si je clique sur une autre cellule ça fasse le même effet mais que du coup le fond vert ne reste pas sur l'ancienne ligne (du coup de C2 à G2).
Or actuellement cela reste coloré. On peut résoudre le problème en modifiant le code ?
Merci merci en tout cas de tout ce temps consacré.
Cordialement,
Rémi
Merci pour cette réponse, c'est presque parfait !
Il y a juste un dernier problème, c'est que je voudrais que lorsque je clique sur une cellule (admettons C2 qui devient la cellule active), cela colore en vert la ligne de la cellule active entre la colonne C et la colonne G (dans l'exemple C2 à G2) mais que si je clique sur une autre cellule ça fasse le même effet mais que du coup le fond vert ne reste pas sur l'ancienne ligne (du coup de C2 à G2).
Or actuellement cela reste coloré. On peut résoudre le problème en modifiant le code ?
Merci merci en tout cas de tout ce temps consacré.
Cordialement,
Rémi
thev
Messages postés
1927
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
29 décembre 2024
692
Modifié le 25 sept. 2018 à 16:40
Modifié le 25 sept. 2018 à 16:40
Bonjour,
Dans ce cas, il suffit de supprimer pour les colonnes C à G toute mise en forme conditionnelle qu'elle existe ou non.
modification du code ci-dessous :
Dans ce cas, il suffit de supprimer pour les colonnes C à G toute mise en forme conditionnelle qu'elle existe ou non.
modification du code ci-dessous :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim champ As Range Set champ = Range("C:G") On Error Resume Next champ.FormatConditions.Delete If Not Intersect(champ, Target) Is Nothing And Target.Count = 1 Then Intersect(Target.EntireRow, champ).FormatConditions.Add Type:=xlExpression, Formula1:="VRAI" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority Selection.FormatConditions(1).Interior.Color = RGB(0, 255, 0) End If End Sub
Remi2236
Messages postés
86
Date d'inscription
jeudi 10 septembre 2015
Statut
Membre
Dernière intervention
22 mai 2024
1
26 sept. 2018 à 08:17
26 sept. 2018 à 08:17
Tu es merveilleux ! lol, ça fonctionne à merveille.
Merci beaucoup de tout ce temps accordé pour mon problème.
Bonne journée à toi et au plaisir.
Cordialement,
Rémi
Merci beaucoup de tout ce temps accordé pour mon problème.
Bonne journée à toi et au plaisir.
Cordialement,
Rémi
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Remi2236
Messages postés
86
Date d'inscription
jeudi 10 septembre 2015
Statut
Membre
Dernière intervention
22 mai 2024
1
24 sept. 2018 à 12:15
24 sept. 2018 à 12:15
J'ai omis de joindre le tableau :
https://www.cjoint.com/c/HIykoTdxsrT
https://www.cjoint.com/c/HIykoTdxsrT
24 sept. 2018 à 13:57
"Erreur d’exécution 13
Incompatibilité de type"
Et ça me met en surbrillance une ligne d'un code :
"Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("D2:E3627")) Is Nothing Then
If Not IsEmpty(Target) Then
Application.EnableEvents = False
Target.Value = UCase(Target.Value) => cette ligne en surbrillance
Application.EnableEvents = True
End If
End If
End Sub"
De plus, ça m'efface la formule dans la colonne A et du coup ça me met #REF sur toutes les autres lignes. Je pense qu'il faudrait demander au code à n'effacer que les colonnes C à H de la ligne concernée...comment faire ?
Je vous joins un exemple sur le mois de janvier, si on essaye de supprimer le numéro 2 dans l'exemple.
https://www.cjoint.com/c/HIylWjgjNST
Enfin, je me demande en effaçant un numéro si l'ordre va quand même suivre ? Exemple si j'ai dans l'ordre le 1,2,3,4,5....etc... et que je demande d'effacer le 2, si les autres lignes vont reprendre la bonne numérotation et ne pas me retrouver avec 1,3,4,5.....
Merci du temps accordé.
Cordialement,
Rémi