Formulaire , tri , ligne vide
Résolu
julia Namor
Messages postés
532
Statut
Membre
-
julia Namor Messages postés 532 Statut Membre -
julia Namor Messages postés 532 Statut Membre -
Bonjour,
Je bloque sur un projet .
J'ai crée un formulaire de saisie .Les données saisies s’inscrivent à la suite dans la colonne A de la feuill1.
Je voudrais qu’après chaque donnée inscrite il se crée une ligne vide et que cette ligne vide soit liée à la donnée de telle sorte que lorsque je fais le tri il y ai toujours la ligne vide associée en dessous de la donnée.
Ouf!!!! , j’espère que je suis claire...
je vous joins un fichier d'exemple
https://www.transfernow.net/?utm_source=partagefichierscom&utm_medium=download
merci de votre aide
Cordialement
Je bloque sur un projet .
J'ai crée un formulaire de saisie .Les données saisies s’inscrivent à la suite dans la colonne A de la feuill1.
Je voudrais qu’après chaque donnée inscrite il se crée une ligne vide et que cette ligne vide soit liée à la donnée de telle sorte que lorsque je fais le tri il y ai toujours la ligne vide associée en dessous de la donnée.
Ouf!!!! , j’espère que je suis claire...
je vous joins un fichier d'exemple
https://www.transfernow.net/?utm_source=partagefichierscom&utm_medium=download
merci de votre aide
Cordialement
10 réponses
-
Bonjour
Est ce que la "ligne vide" reste toujours vide ou bien est ce qu'elle est susceptible d'être remplie et si oui, avec quoi (valeur, formule)?
Cdlmnt -
Bonjour julia
Si j'ai bien compris il faut rajouter une colonne B dans laquelle inscrire sur 2 lignes les valeurs de A , de manière ensuite à faire le tri sur cette colonne mais tu peux parfaitement masquer cette colonne B
Modifie alors ta macro ainsi :Private Sub CommandButton1_Click() M = ComboBox1.Value Compt = Sheets("FEUIL1").Range("B" & Rows.Count).End(xlUp).Row With Sheets("FEUIL1") .Range("A" & Compt + 1).Value = Me.ComboBox1.Value .Range("B" & Compt + 1).Value = Me.ComboBox1.Value .Range("B" & Compt + 2).Value = Me.ComboBox1.Value .Range("A" & Compt + 1).Borders(xlEdgeLeft).LineStyle = xlContinuous .Range("A" & Compt + 1).Borders(xlEdgeLeft).Weight = xlThin .Range("A" & Compt + 1).Borders(xlEdgeTop).LineStyle = xlContinuous .Range("A" & Compt + 1).Borders(xlEdgeTop).Weight = xlThin .Range("A" & Compt + 1).Borders(xlEdgeBottom).LineStyle = xlContinuous .Range("A" & Compt + 1).Borders(xlEdgeBottom).LineStyle = xlThin .Range("A" & Compt + 1).Borders(xlEdgeRight).LineStyle = xlContinuous .Range("A" & Compt + 1).Borders(xlEdgeRight).Weight = xlThin .Range("A" & Compt + 2).Value = "" .Range("A" & Compt + 2).Borders(xlEdgeLeft).LineStyle = xlContinuous .Range("A" & Compt + 2).Borders(xlEdgeLeft).Weight = xlThin .Range("A" & Compt + 2).Borders(xlEdgeTop).LineStyle = xlContinuous .Range("A" & Compt + 2).Borders(xlEdgeTop).Weight = xlThin .Range("A" & Compt + 2).Borders(xlEdgeBottom).LineStyle = xlContinuous .Range("A" & Compt + 2).Borders(xlEdgeBottom).LineStyle = xlThin .Range("A" & Compt + 2).Borders(xlEdgeRight).LineStyle = xlContinuous .Range("A" & Compt + 2).Borders(xlEdgeRight).Weight = xlThin .Range("A" & Compt + 3).Value = "" .Range("A" & Compt + 3).Borders(xlEdgeLeft).LineStyle = xlContinuous .Range("A" & Compt + 3).Borders(xlEdgeLeft).Weight = xlThin .Range("A" & Compt + 3).Borders(xlEdgeTop).LineStyle = xlContinuous .Range("A" & Compt + 3).Borders(xlEdgeTop).Weight = xlThin .Range("A" & Compt + 3).Borders(xlEdgeBottom).LineStyle = xlContinuous .Range("A" & Compt + 3).Borders(xlEdgeBottom).LineStyle = xlThin .Range("A" & Compt + 3).Borders(xlEdgeRight).LineStyle = xlContinuous .Range("A" & Compt + 3).Borders(xlEdgeRight).Weight = xlThin Columns("A:B").Select ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("B2:B1000" _ ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Feuil1").Sort .SetRange Range("A1:B1000") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End With maj_USER1 MsgBox "Enregistré" Me.ComboBox1.Value = "" End Sub
Ne pas oublier non plus de modifier la plage dans la macro RAZ pour effacer aussi la colonne B
Cdlmnt
Via
-
Option 1. la "ligne vide" reste toujours vide
http://www.cjoint.com/c/GCktDUuoDzg
Option 2. la "ligne vide" peut être remplie ou non à la main dans la feuille
http://www.cjoint.com/c/GCktFRU6PRg
Cdlmnt -
Merci les gars , j'ai hate de tester vos propositions
Je reviens vers vous ... -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour
Tous mes remerciements pour ces fichiers , vous répondez exactement à mes besoins .
Le fichier Option 1 de ccm81 me convient le plus .
Pour aller plus loin ; quelques soucis apparaissent
-Comment l'adapter si mes lignes débutent à la 12éme.
- Je voudrais fusionner la cellule vide et la cellule non vide ; pas de soucis . mais je n'arrive plus à appliquer un filtre en fonction des autres colonnes .
Je pense que c'est lié aux cellules fusionnées , y a t il un moyen de contourner?
ci joint un fichier exemple
https://mon-partage.fr/f/Rq72iS32/
merci beaucoup -
Bonjour
Apres plusieurs tests , j'abandonne les cellules fusionnées ( problématiques)
du coup je voudrais modifier le merveilleux code de ccm81 au niveau du tri
en fait , dans mon projet les données sont inscrites à partie de la cellule F12
mais le tri s'applique sur toute la colonne F.
Comment appliquer le tri qu'a partir de f12Option Explicit
Private Sub CommandButton1_Click()
Dim M As String, lifin As Long, k As Long, t(), n As Long
Application.ScreenUpdating = False
M = Me.ComboBox1.Value
With Sheets("FEUIL1")
lifin = .Range("F" & Rows.Count).End(xlUp).Row
If lifin Mod 2 = 0 Then lifin = lifin + 1
.Range("F" & lifin + 1).Value = M
.Range("F" & lifin + 1).Borders.LineStyle = xlContinuous
.Range("F" & lifin + 2).Borders.LineStyle = xlContinuous
.Range("F" & lifin + 2).Borders.Weight = xlThin
n = (lifin + 1) \ 2
ReDim t(1 To n, 1 To 2)
For k = 1 To n
t(k, 1) = Range("F" & 2 * k).Value
t(k, 2) = Range("F" & 2 * k + 1).Value
Next k
Call TriSel(t, 1)
For k = 1 To n
Range("F" & 2 * k).Value = t(k, 1)
Range("F" & 2 * k + 1).Value = t(k, 2)
Next k
End With
maj_USER1
MsgBox "Enregistré"
Me.ComboBox1.Value = ""
Application.ScreenUpdating = True
End SubPublic Sub TriSel(ByRef t, ByVal cle As Long)
Dim lideb As Long, lifin As Long, codeb As Long, cofin As Long
Dim i As Long, j As Long, rangmini As Long, aux, k As Long
lifin = UBound(t, 1)
cofin = UBound(t, 2)
lideb = LBound(t, 1)
codeb = LBound(t, 2)
If cle > cofin Then Exit Sub
For i = lideb To lifin - 1
rangmini = i
For j = i To lifin
If t(j, cle) < t(rangmini, cle) Then rangmini = j
Next j
For k = codeb To cofin
aux = t(i, k)
t(i, k) = t(rangmini, k)
t(rangmini, k) = aux
Next k
Next i
End Sub
merci beaucoup -
Peux tu envoyer un bout de ton fichier, dans ton dernier envoi, il y avait 3 colonnes au lieu de deux, ça change pas mal de choses.
Cdlmnt -
Bonsoir ccm81
J'étais lancée dans la réalisation du tri en utilisant la méthode de via55 a savoir la création d'une colonne supplémentaire et y effectuer le tri
Du coup je te confie le bébé à tes bons soins
https://mon-partage.fr/f/QFEtdUDe/
merci énormément -
Voilà pour la mise à jour de l’enregistrement des données colonne F
https://www.cjoint.com/c/GCqntlisTtg
Cdlmnt -
Bonsoir ccm81
Juste une chose à dire. MERCI
J'avoue que c'était un peu laborieux de ma part mais bravo , tu as répondu exactement à mon souhait.
Merci