Bouton suppression et tri combobox
Bonjour,
Merci beaucoup d'avoir pris le temps de me répondre. Désolé pour la mise en forme du code. Comme je l'ai précisé je ne maîtrise pas le code VBA donc si vous relevez un massacre dans ce qui a été présenté ne m'en veuillez pas. Pour le bouton supprimer j'ai une erreur à chaque test au niveau de la ligne Rows (B2:B65536). Je pense qu'il n'arrive pas à reconnaître la plage de cellule. Pour le code de la combobox1 où je veux que le tri se fasse, je n'ai pas essayé d'intégrer le code nécessaire. Je ne sais pas comment faire. Je vous envoie le fichier pour comprendre ma demande. C'est juste avoir la possibilité de supprimer une ligne par le biais du formulaire et avoir la liste triée par ordre alphabétique dans la combobox1 (recherche). Encore une fois merci pour votre aide
Cordialement
Private Sub BT_SUP_Click()
Sheets("BD").Unprotect Password:="u1wxr6"
Dim J As Long
If MsgBox("Confirmez-vous la suppression de ce contact ?", vbYesNo, "Demande de confirmation de suppression") = vbYes Then
Rows([B2:B65536].Find(ComboBox1.Value).Row).EntireRow.Delete 'erreur à ce niveau'
ComboBox1.Clear
Set Ws = Sheets("BD")
With Me.ComboBox1
For J = 2 To Ws.Range("B" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("B" & J)
Next J
End With
End If
Sheets("BD").Protect "u1wxr6", AllowFiltering:=True
End Sub
Private Sub Combobox1_Change() 'pour ajouter un tri par ordre alphabétique'
Dim Ligne As Long
Dim i As Integer, J As Integer
Dim TB
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
For i = 1 To 17
Me.Controls("TB" & i) = Ws.Cells(Ligne, i + 0)
Next i
J = 18
For i = 1 To 3
If Ws.Cells(Ligne, J) = True Then
Me.Controls("CheckBox" & i).Value = True
Else
Me.Controls("CheckBox" & i).Value = False
End If
J = J + 1
Next i
End Sub
Bonsoir,
Commence par mettre ton code sous balises Code, ça le rend plus lisible et ça conserve l'indentation, et ça fatigue moins les intervenants qui ont à le lire.
Ta ligne en erreur dans la première proc., rien d'étonnant !
Quant à la seconde, tu parles de tri mais on ne voit aucune trace pouvant laisser penser à un tri...
On ne peut que s'interroger sur ce que tu fais et veux faire...
Cordialement.
Bonjour,
Merci pour tout. Désolé j'ai modifié la mise en forme du code et je vous ai envoyé un fichier pour plus de compréhension. Juste avoir la possibilité de supprimer une ligne par le biais du formulaire et avoir la liste triée qui s'affiche dans la combobox1 RECHERCHE. Merci par avance pour votre aide
Cordialement
Bonjour,
C'est bien d'avoir mis un fichier... mais avec des messages d'erreurs qui s'ouvrent dès qu'on bouge, ça n'incite guère à prolonger la visite !
Pour le bouton supprimer j'ai une erreur à chaque test au niveau de la ligne Rows (B2:B65536).
Comme en fait de ligne il s'agit d'une colonne... j'ai l'impression que tu te fais des croche-pieds.
Si je comprends le but de cette ligne : tu recherches avec Find une valeur sélectionnée dans la Combo, dans la colonne B, et l'ayant trouvée tu supprimes la ligne.
En raisonnant un peu : tu appliques la méthode Find à un objet Range constitué par la colonne B, laquelle te renvoie un objet Range, la cellule où se trouve la valeur cherchée, et il ne te reste plus qu'à renvoyer la ligne de cette cellule pour la supprimer.
Columns("B").Find(ComboBox1.Value).EntireRow.Delete
En l'écrivant simplement, tel que décrit, ça aura une chance de fonctionner !
Ceci étant cette ligne ne me plaît qu'à moitié car Columns non raccordé à sa feuille parente constitue ce qu'on appelle une expression non qualifiée, qui présente quelques aléas (et ce n'est pas du bon code pour tout dire).
Mais tu as d'autres aléas en puissance : si la recherche n'aboutit pas, pas de cellule renvoyée et... erreur.
Il y a toujours intérêt à recueillir l'objet cherché avec Find dans une variable Range, et à la tester pour savoir si son contenu n'est pas Nothing avant de donner cours à la suite.
Pour le reste, je n'entends pas aller plus loin dans ton fichier, outre les désagréments que je n'ai aucune envie de prendre le temps d'éliminer pour pouvoir y circuler un peu plus aisément, il y a de nombreuses choses que je ne vais guère apprécier, et j'aurai un peu de mal dans un environnement qui ne me convient pas, construit sur des choix que je ne partage pas, à commencer par l'ouverture en non modal d'un Userform de saisie qui me paraît une hérésie complète...
Pour te donner tout de même une piste pour ton histoire de tri, si tu veux affecter à ta Combo une liste triée, le tri ne se fait évidemment pas dans la Combo ! Tu constitues ta liste, tu la tries, tu l'affectes une fois triée.
Je pense qu'avant de vouloir manipuler les fenêtres au moyen d'API il est souhaitable de maîtriser un peu mieux les bases...
Cordialement.
Bonjour,
Merci d'avoir pris le temps de jeter un coup d’œil. Bonne continuation
Cordialement
bonjour
salut au passage MFerrand
pourquoi créer (par VBA par autre méthode) des fonctions déjà présentes dans Excel ?
"supprimer" une ligne
"créer" une ligne
etc.
amitiés
Bonjour,
Merci pour votre réponse. L'idée est de passer par un formulaire de saisie. Les utilisateurs n'auront pas accès à la base de données donc n'auront pas la possibilité de faire appel aux fonctions d'Excel. Merci encore pour votre réponse
Cordialement
re
Excel n'est pas un logiciel bien protégé
on peut bricoler pour améliorer la protection, mais c'est comme ajouter un blindage sur ta voiture : tu vas te heurter à des problèmes de multiples détails !
essaye un SGBD (ça va faire réagir les amoureux d'Excel) comme Access ou OOO Base.
à te relire
Bonjour,
Peut être que vous avez raison. Je n'ai pas les compétences nécessaires pour me prononcer sur ce genre de choix. En plus pour passer exemple sur Access il faut maîtriser au moins la base (création de tables, définir les propriétés, ...) ce qui n'est pas mon cas...En tout cas merci pour tout et bonne continuation