LISTVIEW Ajouter Modifier Supprimer

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Bonsoir Papou,

Merci pour votre intérêt. je m'en doute pas, que j'ai plein d’erreurs dans mon fichier. Votre formule est bien évidement, celle qu'il me faut, mais je n'arrive pas à la bien placer.

Du coup, j'ai triché.
Dans la colonne C 'Base' j'ai ma date, mais le j'ai toujours le format pas souhaitable Par contre le bon format apparait après le tableau, dans la colonne L, je ne sait même pas comment et pourquoi.

j'ai donc masqué la colonne C et travaille avec la L

Mais bon, je voudrai faire des changements. Dans la ListView je veux donner la possibilité de faire un tri par moi et année. C'est primordiale, mais ça sent une nouvelle usine à gaz. Je ne sais pas trop, de quel pied il faut danser.

Je joins mon fichier allégé sur le fil uù on a monté ce fichier depuis plusieurs mois.

Merci d'avance !
 

Fichiers joints

Bebere

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

bonjour Terpick,Jp,Chti
dans RemplirListbox la variable col=0


Private Sub Userform_initialize() 'à l'initialisation de l'Userform'
' pour mise au point
'col = 1: NomDefini = "pays" mis en commentaire
 

jp14

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour
Salut Bebere

Les codes comme ci dessous sont à modifier dans l'usf "Quelle_Mission"
Code:
Private Sub OptionButton4_Click()

    If OptionButton4 Then
        col = 1: NomDefini = "ens"
        UsfParam.Label1.Caption = "Saisissez le nom "
        UsfParam.Show
        Unload quelle_mission
    End If
La variable UsfParam.Label1 n'existe pas si l'usf n'est pas crée.
Il faut passer par une variable publique


PS pour faire les essais de l'usf "UsfParam" sans passer par "quelle_mission" il faut mettre des valeurs dans les variables.

A tester

JP
 
Dernière édition:

jp14

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour

Bonsoir Papou,

Mais bon, je voudrai faire des changements. Dans la ListView je veux donner la possibilité de faire un tri par moi et année. C'est primordiale, mais ça sent une nouvelle usine à gaz. Je ne sais pas trop, de quel pied il faut danser.
Dans une listeview les données sont du type string. Pour trier les dates il faut les transformer, en calculant le nombre de jours depuis l'année 1901, excel le fait très bien, ou en écrivant la date sous la forme année mois jour.

Le plus simple est de créer une colonne ( en dernière position ) avec comme largeur 0, elle sera invisible.

Modifications
Rajouter une colonne de taille 0
Code:
        For col = 1 To 4: .ColumnHeaders.Add , , Sheets("Base").Cells(2, col), 50: Next
        .ColumnHeaders.Add , , "Date", 0
Inscrire une valeur dans cette colonne en transformant la date en nombre
Code:
       If .Cells(L, col) = Me.ComboBox5 Then
         ListView1.ListItems.Add , "A" & L, .Cells(L, 1)
         For C = 2 To 4
           ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , .Cells(L, C)
         Next
          ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , Sheets("Base").Cells(L, 3) * 1
       End If
Si on clique sur la colonne "Date", on indique au programme qui réalise l'opération que la colonne date est la dernière.
Code:
Private Sub Listview1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
Dim colonne As Byte
colonne = ColumnHeader.Index - 1
If colonne = 2 Then colonne = 4
    With ListView1
        .Sorted = False
        .SortKey = colonne
Si on désire faire un tri uniquement par mois et année il faut écrire
Code:
         If Len(Month(Sheets("Base").Cells(L, 3))) = 1 Then
            date1 = Year(Sheets("Base").Cells(L, 3)) & "0" & Month(Sheets("Base").Cells(L, 3))
        Else
            date1 = Year(Sheets("Base").Cells(L, 3)) & "0" & Month(Sheets("Base").Cells(L, 3))
        End If
         
          ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , date1
A tester

JP
 
Dernière édition:

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour à tous,

JP, merci pour les indices. J'ai inséré les macros dans VBA (j'espère là, où il faut).
Mais... pas de résultat souhaité... j'ai peur de m'avoir trompé.

Pour la partie Paramètres. Ca bog pour les trois actions:

En ajoutant - on saisie un mot, mais quand on clock pour confirmer il y a un message d'erreur :
Code:
Private Sub CommandButton1_Click()    'bouton "ajouter"
Dim L As Long
If Me.TextBox1.Value = "" Then
    Call MsgBox("Vouds devez indiquer un : " & NomDefini, vbExclamation, "")
End If
'condition : si la TextBox1 n'est pas vide
TextBox1 = (Application.WorksheetFunction.Trim(TextBox1.Value), vbProperCase)
En modifiant, dès qu'on clique sur une ligne, qu'on veut modifier :
HTML:
Private Sub ListBox2_Click()    'au clic dans la ListBox2
    Me.TextBox2.Value = Me.ListBox2.Value    'place le contenu de la donnée sélectionnée dans la TextBox2
    Adr = ListBox1.List(ListBox1.ListIndex, 1)
En supprimant, ça va jusqu'à la confirmation, mis après hélas, erreur :
HTML:
Private Sub TrierColonne()
Dim Dl1 As Long
Dim Plg1 As Range
Dim Plg2 As Range
Dl1 = Worksheets("parametres").Cells(Columns(col).Cells.Count, col).End(xlUp).Row
Set Plg1 = Worksheets("parametres").Range(Cells(1, col), Cells(Dl1, col))
Set Plg2 = Worksheets("parametres").Range(Cells(1, col), Cells(1, col))
Plg1.Sort Key1:=Plg2
End Sub
A+
 

Fichiers joints

Dernière édition:

jp14

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour

Bonjour à tous,

Pour la partie Paramètres. Ca bog pour les trois actions:

En ajoutant - on saisie un mot, mais quand on clock pour confirmer il y a un message d'erreur :
Code:
Private Sub CommandButton1_Click()    'bouton "ajouter"
Dim L As Long
If Me.TextBox1.Value = "" Then
    Call MsgBox("Vouds devez indiquer un : " & NomDefini, vbExclamation, "")

[/QUOTE]
Quand on a un message d'erreur, il faut quitter la procédure avec "Exit sub" que j'ai oublié d'écrire.




[QUOTE]

En modifiant, dès qu'on clique sur une ligne, qu'on veut modifier : [HTML]Private Sub ListBox2_Click()    'au clic dans la ListBox2
    Me.TextBox2.Value = Me.ListBox2.Value    'place le contenu de la donnée sélectionnée dans la TextBox2
    Adr = ListBox1.List(ListBox1.ListIndex, 1)[/HTML]

En supprimant, ça va jusqu'à la confirmation, mis après hélas, erreur : [HTML]Private Sub TrierColonne()
Dim Dl1 As Long
Dim Plg1 As Range
Dim Plg2 As Range
Dl1 = Worksheets("parametres").Cells(Columns(col).Cells.Count, col).End(xlUp).Row
Set Plg1 = Worksheets("parametres").Range(Cells(1, col), Cells(Dl1, col))
Set Plg2 = Worksheets("parametres").Range(Cells(1, col), Cells(1, col))
Plg1.Sort Key1:=Plg2
End Sub[/HTML]

A+[/QUOTE]

La procédure fonctionne si la feuille active est la feuille "parametres". 

Ci dessous le code modifié, a tester

[CODE]Private Sub TrierColonne()
Dim Dl1 As Long
Dim Plg1 As Range
Dim Plg2 As Range
With Worksheets("parametres")
Dl1 = .Cells(Columns(col).Cells.Count, col).End(xlUp).Row
Set Plg1 = .Range(.Cells(1, col), .Cells(Dl1, col))
Set Plg2 = .Range(.Cells(1, col), .Cells(1, col))
Plg2.Sort Key1:=Plg1

End With

End Sub
Je n'ai pas lu suffisamment l'aide de VBA
Notez le point devant chaque occurrence de la propriété Cells. Le point est nécessaire si le résultat de l'instruction With précédente doit être appliqué à la propriété Cells ; dans le cas présent, il permet d'indiquer que les cellules se trouvent dans la feuille de calcul 1 (sans le point, la propriété Cells renverrait les cellules de la feuille active).
JP
 
Dernière édition:

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Bonsoir JP

La procédure fonctionne si la feuille active est la feuille "parametres".

Ci dessous le code modifié, a tester
Avec le nouveau code ça fonctionne pour SUPPRIMER. Néanmoins, pour sortir CommandButton2 se met en défaut avec le même message :projet ou bibliothèque introuvable.

Quand on a un message d'erreur, il faut quitter la procédure avec "Exit sub" que j'ai oublié d'écrire.
Que veut dire QUITTER LA PROCÉDURE?

Merci d'avance

A+
 

jp14

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Bonsoir

Suite au message, il ne faut pas continuer la macro, il faut la quitter d’où "exit sub"

Code:
If Me.TextBox1.Value = "" Then
    Call MsgBox("Vouds devez indiquer un : " & NomDefini, vbExclamation, "")
    exit sub
End If
Je n'ai pas de problème pour quitter l'userform

Code:
Private Sub CommandButton2_Click()    'bouton "sortir" (page "ajouter")
    mv = 0    'réinitialise la variable mv (déclarée publique)
    col = 0
    Unload Me    'vide et ferme l'UserForm

End Sub
JP
 
Dernière édition:

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Bonsoir,

Suite au message, il ne faut pas continuer la macro, il faut la quitter d’où "exit sub"

Code :
If Me.TextBox1.Value = "" Then
Call MsgBox("Vouds devez indiquer un : " & NomDefini, vbExclamation, "")
exit sub
End If
Désormais j'ai le même message que pour supprimer : Projet ou bibliothèque introuvable.

Mais qu'est-ce que cela veut dire??

je joins le fichier

A+
 

Fichiers joints

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour tout le monde,

JP, je n'ai rien pu fabriquer. Du coup, j'ai repris le fichier d'il y a 4 jours, j'ai ajouté Unload UsfParam dans Private Sub CommandButton1_Click() 'bouton "ajouter". Cette action ferme l'USF, ça ira. Il y a des bogs plus importants dans ce fichier à régler.

Bonne fin AM et A+
 

terpick

XLDnaute Occasionnel
Re : LISTVIEW Ajouter Modifier Supprimer

Bonjour le forum, le fil !

C'est parfaît, tout fonctionne, merci JP.

En revenant vers le tri par moi et année dans lisview, faut-il ajouter qqchose dans le tableau Base? J'ai fait les modifes dans VBA, mais cela ne marche pas.

Et puis-je demander encore un conseil: je pense d'élargir la listbox en longueur et en hauteur, parce qu'en essayant utiliser ce mode de fonctionnement me parraît peu pratique... Qu'en pensez-vous?

A+
 

jp14

XLDnaute Barbatruc
Re : LISTVIEW Ajouter Modifier Supprimer

Bonsoir
Bonjour le forum, le fil !
En revenant vers le tri par moi et année dans lisview, faut-il ajouter qqchose dans le tableau Base? J'ai fait les modifes dans VBA, mais cela ne marche pas.

A+
Il faut remplacer cette ligne
Code:
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , Sheets("Base").Cells(L, 3) * 1
Par

Code:
     If Len(Month(Sheets("Base").Cells(L, 3))) = 1 Then
            date1 = Year(Sheets("Base").Cells(L, 3)) & "0" & Month(Sheets("Base").Cells(L, 3))
        Else
            date1 = Year(Sheets("Base").Cells(L, 3)) & "0" & Month(Sheets("Base").Cells(L, 3))
        End If
         
          ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , date1

JP
 

Discussions similaires


Haut Bas