Supprimer ligne complète dans USERFORM (collection jb)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

hemardjean

XLDnaute Occasionnel
Bonjour le forum

J’ai à nouveau besoin de vous amis d’excel.

J’ai téléchargé le dossier de jb (plein de codes bien utile)et dedans il y a le formulaire supliste formulaire que j’ai essayé de modifier pour qu’il puisse supprimer une ligne complète et non pas une cellule.

Pour ce faire j’ai d’abord modifié le code dans le « Nom de champ » en modifiant le code =DECALER($D$2;;;NBVAL($D:$D)-1) par =DECALER($c$2:$e2;;;NBVAL($c:$c)-1) ça n’a pas marché puis j’ai essayé dans le code du formulaire de l’USERFORM en changeant les chiffres mais hélas toujours échec je ne sais plus que faire et je me tourne vers vous .

Merci de votre aide .

Cordialement
 

Pièces jointes

Re : Supprimer ligne complète dans USERFORM (collection jb)

Bonjour

pour supprimer sur double clic, essaie

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
derligne = Range("C" & Rows.Count).End(xlUp).Row
If derligne > 2 Then
    If Not Intersect(Target, Range("C3:E" & derligne)) Is Nothing Then
        Range("C" & Target.Row & ":E" & Target.Row).Delete Shift:=xlUp
        Cancel = True
    End If
End If
Cancel = True
End Sub

code à mettre dans la feuil90, pas dans un module
 
Re : Supprimer ligne complète dans USERFORM (collection jb)

Bonjour Eric S et le forum

Merci pour la réponse.

j’ai placé le code comme indiquer mais peut-on améliorer ce code pour supprimer la ligne « c/e » en une seule fois et non en trois clics successifs?

Merci de ton aide

Cordialement
 
Re : Supprimer ligne complète dans USERFORM (collection jb)

Re

quand tu double clic sur une ligne de ta liste, en colonne C D ou E, les 3 cellules sont supprimées

Range("C" & Target.Row & ":E" & Target.Row).Delete Shift:=xlUp

je ne comprends pas ta question
 
Re : Supprimer ligne complète dans USERFORM (collection jb)

Bonsoir Eric S et le forum

Merci pour ton code c’est ce que je recherche avec des points de détail : peux tu le faire fonctionner avec un USERFORM et sur toutes les colonnes sans tri mais aussi que la ligne supprimée reste vierge (les cellules qui reçoivent les informations du formulaire ont des liaisons vers une autre feuille)et je t’explique pourquoi.

J’ai déjà réalisé un formulaire avec texbox listes déroulantes etc.. (qui remplit ces fameuses cellules elles seront dans le futur dossier de A1 à J25) mais lorsqu’il y a une erreur je cherche à la corriger directement avec cette USERFORM car quand le dossier sera terminé les feuilles seront verrouillées pour que l’utilisateur ne puisse pas supprimer les liaisons.

Je ne sais pas si je suis assez explicite et je m’en excuse ?

Cordialement
 
Re : Supprimer ligne complète dans USERFORM (collection jb)

Bonsoir Eric S et le forum
Bravo et merci c’est exactement ce que je recherchais .Pour répondre à ta question oui la ligne doit rester vierge car comme je te l’ai mis plus haut , la feuille qui reçoit le formulaire ou la correction à des liaisons.

Je viens de placer ton usf dans mon dossier et je l’ai adapté pour qu’il couvre les cellules A1 à J20 .

Un petit bug entre les codes sur la feuille de ton code et mon usf au niveau de :. Range("liste").End(xlDown).Offset(1, 0) = Target.Value

Titre du bug
(erreur d’exécution ‘1004’
Erreur définie par l’application ou par l’objet)

Voici les codes :
Ton code dans la feuille
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
If IsError(Application.Match(Target.Value, Range("liste"), 0)) Then
Range("liste").End(xlDown).Offset(1, 0) = Target.Value
Range("liste").Sort Key1:=Range("liste")(1)
End If
End If
End Sub

Le code usf
Private Sub ComboBox1_Change()
'Récupération du choix :
Me.TextBox1 = Me.ComboBox1.Value
End Sub

Private Sub UserForm3_Initialize()
Me.ComboBox1.ListIndex = 0 "positionne sur le premier élément
End Sub

Private Sub age_Change()
End Sub

Private Sub CommandButton1_Click()
CONVERTION1.Show

End Sub

Private Sub CommandButton2_Click()
UserForm1.Show
End Sub
e Sub CommandButton3_Click()
F_SupListe.Show
End Sub

Private Sub ListBox1_Click()
End Sub

Private Sub UserForm_Initialize()
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range("profil")
If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
Next c
Me.profil.List = MonDico.items
End Sub

Private Sub b_validation_Click()
'--- Positionnement dans la base
[A65000].End(xlUp).Offset(2, 0).Select
'--- Transfert Formulaire dans BD
ActiveCell.Value = Application.Proper(Me.SousMotif)
ActiveCell.Offset(0, 1).Value = (Me.age)
ActiveCell.Offset(0, 2).Value = TITRE
ActiveCell.Offset(0, 3).Value = Me.nom
ActiveCell.Offset(0, 4).Value = Environ("username")
ActiveCell.Offset(0, 5).Value = (TextBox1)
ActiveCell.Offset(0, 6).Value = Now
ActiveCell.Offset(0, 7).Value = (Me.age2)
ActiveCell.Offset(0, 8).Value = (GEMRCN)
ActiveCell.Offset(0, 15).Value = Prenom2
ActiveCell.Offset(0, 17).Value = Prenom3
ActiveCell.Offset(0, 20).Value = (FAMILLEPRODUIT)


End Sub
Private Sub b_fin_Click()
Unload Me
End Sub

Private Sub profil_Change()
'LISTE DEROULANTE
Set MonDico = CreateObject("Scripting.Dictionary")
For i = 1 To Range("motif").Count
If Range("profil")(i) = Me.profil Then
temp = Range("motif")(i)
If Not MonDico.Exists(temp) Then
MonDico.Add temp, temp
End If
End If
Next i
Me.Motif.List = MonDico.items
Me.Motif.ListIndex = 0
End Sub
Private Sub Motif_Change()
'LISTE DEROULANTE
Set MonDico = CreateObject("Scripting.Dictionary")
For i = 1 To Range("SousMotif").Count
If Range("Motif")(i) = Me.Motif Then
temp = Range("SousMotif")(i)
If Not MonDico.Exists(temp) Then
MonDico.Add temp, temp
End If
End If
Next i
Me.SousMotif.List = MonDico.items
Me.SousMotif.ListIndex = 0
End Sub

Merci encore pour ton dévouement car au départ mes explications n’étaient pas très claires et je m’en excuse.
cordialement
 
Re : Supprimer ligne complète dans USERFORM (collection jb)

Bonjour

je ne comprends pas ton dernier post, sans le fichier c'est un peu dur

je ne vois pas le code de l'usf doubleclic
tu parles de A1 à J20 et ton code "feuille" regarde B2 .....

???????????
 
Re : Supprimer ligne complète dans USERFORM (collection jb)

Bonsoir Eric S et le forum
Je m’excuse voici le dossier.
Je t’ai surligné la fameuse zone A1 J20 en rouge dans la feuille « SaisieFicheSimple »
Dans cette feuille on ouvre le premier USF « création de la fiche » et c’est lorsque l’on fait une erreur de saisie dans la partie encadrée « Ingrédients » que l’USF que tu as créé doit opérer à partir du bouton situé en bas a droite .
cordialement
 

Pièces jointes

Re : Supprimer ligne complète dans USERFORM (collection jb)

Re

en fait le transpose génère une erreur quand ta liste contient 0 ou 1 élément (rien en A3 ou seulement 1 valeur en A3)

j'essaie de regarder en début de matinée

edit : idée du matin, c'est bien

Pour modifier à minima : imposer une taille min de 2 lignes à "Liste" en modifiant comme suit

Code:
=DECALER(SaisieFicheSimple!$A$2;;;MAX(2;EQUIV("ZZZZ";SaisieFicheSimple!$A:$A;1)-1))

au pire tu as une liste de 2 lignes vides et ton transpose fonctionnera

Note: pendant que tu es dans le gestionnaire de noms, nettoie le, entre autre plusieurs vieux noms avec des #REF
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

N
Réponses
3
Affichages
1 K
nemrod57
N
E
Réponses
3
Affichages
1 K
B
  • Question Question
Réponses
6
Affichages
1 K
babubil
B
L
Réponses
3
Affichages
898
Laurent97310
L
Retour