Probleme de code

Re

Pour honnête, je suis parti d'un fichier existant que j'ai modifié à ma façon et en fonction de ce que je voulais faire.

Je n'ai pas touché cette partie là. Je suppose que si le nom de l'association n'existe pas dans la feuille liste, il ajoute à la liste.

L'ajout se fait par le code Sub AjoutAssociation() via votre bouton dans la feuille Menu mais ne vérifie pas si le nom existe déjà

Le code Sub TraitementAssoc() ne sert pas ou tout au moins ne fonctionnera pas correctement. Vous pouvez l'enlever ainsi que le Call TraitementAssoc dans la macro Private Sub CommandButton1_Click() de l'userform Reservation

Ensuite dans le module1, remplacez le code Sub AjoutAssociation() par celui ci-après :

Sub AjoutAssociation()
Dim dlg As Integer, lig As Integer
Dim Nomassoc As String
Nomassoc = InputBox("Indiquez le nom de l'association", "Ajout d'une Association")
With Sheets("Listes")
    If Nomassoc <> "" Then
        .Visible = True
        On Error Resume Next
        lig = .Columns("E:E").Find(Nomassoc, LookIn:=xlValues, LookAt:=xlWhole).Row
        If lig > 0 Then
            MsgBox "Cette association existe déjà !"
        Else
            dlg = .Range("E" & .Rows.Count).End(xlUp).Row + 1
            .Range("E" & dlg) = Nomassoc
        End If
    End If
    .Visible = False
End With
End Sub

Le code vérifiera que le nom de l'association existe ou pas dans la feuille Listes (Colonne E). Dans le cas, où il n'existe pas, il sera ajouté à la suite de ceux existants dans la colonne E.

Crdlt

Merci Dan,

Je m'en doutais mais je n'ai pas osé faire la manip.

Par contre, maintenant, je vais me pencher sur macro pour calculer la valorisation. Pour l'instant, j'ai un tableau, mais je voudrais l'automatiser un peu plus.

Re

OK. Il reste un petit souci dans la macro Private Sub Userform_activate() qui reprend également la ligne 1 de la feuille Listes. D'où en utilisation, il serait possible d'aller ajouter les information de cette ligne en cliquant sur le bouton Valider.

Est-ce que vous voulez garder ces informations à l'ouverture de l'Userform ?

Par ailleurs, vous pouvez plutôt nommer cette macro Private Sub Userform_activate() comme ceci --> Private Sub UserForm_Initialize(), qui est plus correct.

Autres corrections que vous pouvez faire :

  • Désactiver la ligne "With Worksheets("Menu").Select" et le "End with" à la fin
  • En début de code remplacer la déclaration de variable "Nbworksheet" (qui n'existe pas dans le code) par "NbGymnases"

Si besoin dites moi

Crdlt

Bonjour Dan

Vraiment merci pour toutes ces informations.

Je vais essayer d'ajouter un tri par ordre alphabétique des association, à la création d'une nouvelle

Il reste un petit souci dans la macro Private Sub Userform_activate() qui reprend également la ligne 1 de la feuille Listes. D'où en utilisation, il serait possible d'aller ajouter les informations de cette ligne en cliquant sur le bouton Valider.

Est-ce que vous voulez garder ces informations à l'ouverture de l'Userform ?

Non ce n'est pas utile.

Bonjour

Je vais essayer d'ajouter un tri par ordre alphabétique des association, à la création d'une nouvelle

Voici une proposition à mettre dans le module 1

Sub Trier()
With Worksheets("listes").Sort
    .SortFields.Clear
    .SortFields.Add2 Key:=Worksheets("listes").Range("E1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    .SetRange Worksheets("listes").Range("E1:E" & Worksheets("listes").Range("E" & Worksheets("listes").Rows.Count).End(xlUp).Row)
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
End Sub

Une fois placée, mettez l'instruction --> Call TRIER dans la macro Sub AjoutAssociation() et ce, juste après l'instruction .Range("E" & dlg) = Nomassoc

Pour l'userform Reservation, vous pouvez modifier les lignes ci-dessous dans la macro Private Sub Userform Initialize :

Set ListeGym = ......
.....
ReDim Arr(2 To NbGymnases)
For I = 2 To NbGymnases
        Arr(I) = ListeGym(I).Value
       Reservation.ComboBox2.AddItem Arr(I)
Next
ComboBox2.ListIndex = -1
....

Il faut refaire cette modification pour chacune des combobox (Listjour, listassoc, etc..)

Si souci dites moi, je vous placerai le fichier avec les modifications

Cordialement

Fait et cela fonctionne.

J'aimerai supprimer les réservations avec la macro supprime.

Actuellement, elle supprime la ligne sélectionnée mais j'aimerai appeler l'association et supprimer toutes les lignes qui s'y rapproche. Il y a un exemple dans le fichier

Re

On peut faire cela via l'Userform "Boiteassoc" en ajoutant un bouton "Supprimer" en plus des deux boutons existants ou vous voulez une autre userform spécifique

Dites moi votre idée

Crdlt

Oui bonne idée

Re,

Cete fois, il est plus simple de vous renvoyer votre fichier amendé car j'ai apporté de petits changements ci et là (déclaration de variables, renommer macro activate dans les usf, etc..)

Principal changement dans le fichier est la macro pour supprimer les infos concernant une association tel que vous l'avez demandé.

De base l'USF est commune au planning et à la suppression et concerne la feuille Recap.

Lorsque vous choisissez de supprimer une association, le bouton Valider sera inactif tandis que si vous choisissez de voir le planning c'est le bouton Supprimer qui sera désactivé.

Il vous reste à peut être à adapter le texte dans l'Usf pour que l'on comprenne que l'on visualise ou on supprime dans la feuille Recap.

Cordialement

Rechercher des sujets similaires à "probleme code"