Outils de suppression en VBA

Loic04

XLDnaute Nouveau
J'ai grandement besoin de votre aide car là, je n'ai aucune idée de comment procéder, j'ai cherché ces derniers jours mais je n'ai pas trouvé de solution qui correspondait, donc je m'en remets à votre savoir-faire qui m'a déjà sauvé dans le passé.

Voila, j'ai un logiciel de parc auto. J'ai réglé correctement la possibilité d'ajouter des véhicules et je voudrais maintenant configurer qq chose pour pouvoir supprimer. Dans le userform de suppression, j'ai simplement une combobox relié par la méthode Rowsource à une base de donnée dans une feuille nommée "Véhicules". C'est ce Rowsource qui permet de connaître les valeurs de combobox, mais il y a un premier problème et ce n'est pas le principal. En fait le code Row Source n'est qu'une colonne limitée des infos véhicules, les véhicules que j'ai ajouté manuellement ça va, j'ai mis la marque, le modèle et la plaque ensemble donc dans le combobox tout apparait mais quand j'ajoute un véhicule, j'ai formulé comme quoi seule la colonne marque et modèle irait dans la colonne de la feuille Vehicules (j'espère que je reste clair :S) mais de ce fait, la plaque d'immatriculation des nouveaux véhicules n'apparaient pas dans le rowsource et donc dans la combobox, et donc difficile de différencier un kangoo d'un autre par la suite. Donc j'aimerais faire en sorte que la plaque soit également prise. Actuellement, quand on ajoute un véhicule, la marque et le modèle se mettent en colonne B, là où est positionné le rowsource puis les numéros d'immatriculations en C. Alors, j'ai essayé de modifier le rowsource pour qu'il prenne également la colonne C mais hélas les combobox ne font apparaitre que la valeur en colonne B soit la marque et modèle.

Alors p-t existe-il une formule style Me.ComboboxAdditem et qui sélectionnerait de telle colonne à telle colonne et de telle ligne à telle ligne. J'espère


Et mon principal soucis, c'est l'outils suppression car je n'ai vraiment aucune idée de comment procéder. J'aimerais que quand l'utilisateur choisit un véhicule de la combobox et qu'il appuie sur le bouton de commande, le véhicule soit supprimer de la feuille "parc auto" et "vehicules" et que si jamais il est entre deux lignes complétés, que ça supprime sa ligne afin de ne pas avoir de trous dans ma base de donnée.


Je sais que j'en demande beaucoup sur ce coup mais là, je me suis vraiment creusé la tête et je n'ai pas réussi. Merci d'avance.


Mon projet: Lien CJoint.com BFmw0sDPyTy
 

MichD

XLDnaute Impliqué
Re : Outils de suppression en VBA

Bonjour,

Voici un fichier exemple :

A ) Il faut oublier la notion rowSource du combobox pour le renseigner
B ) Le fichier Exemple est fait pour 2 colonnes, mais le principe va aussi pour N colonnes
 

Pièces jointes

  • Exemple = formulaire = saisie = combobox.xls
    46.5 KB · Affichages: 59
C

Compte Supprimé 979

Guest
Re : Outils de suppression en VBA

Bonsoir Loic04

Perso dans ce genre de cas,
j'ai pour habitude d'utiliser un calcul matriciel pour trouver la bonne ligne

Tu trouveras ci-joint ton fichier avec le code modifié pour la suppression ;)

A+
 

Pièces jointes

  • Loic04_Logiciel GPA-version XLD.xls
    421 KB · Affichages: 76
  • Loic04_Logiciel GPA-version XLD.xls
    421 KB · Affichages: 90
  • Loic04_Logiciel GPA-version XLD.xls
    421 KB · Affichages: 90
Dernière modification par un modérateur:
C

Compte Supprimé 979

Guest
Re : Outils de suppression en VBA

Bonsoir MichD

Voici un fichier exemple :
A ) Il faut oublier la notion rowSource du combobox pour le renseigner
B ) Le fichier Exemple est fait pour 2 colonnes, mais le principe va aussi pour N colonnes
Ton exemple ne fonctionnera pas pour le cas de Loic04

Il est souhaitable de s'adapter au cas des demandeurs, et non l'inverse ;)

A+
 

MichD

XLDnaute Impliqué
Re : Outils de suppression en VBA

Bonjour BrunoM45,

On ne peut faire mouche à chaque fois! Je ne sais pas ce qu'il y a dans son fichier,
mais je lui ai présenté une approche simple et rapide de coder!

Si le demandeur choisit une autre approche, cela ne m'empêche pas de dormir.
C'est sa prérogative!

À titre de bénévole, je réclame le droit d'en faire à ma tête. Mes suggestions
ne sont pas nécessairement meilleures ou même justes, je réclame aussi le
droit à l'erreur. Rien de moins! ;-))
 

Loic04

XLDnaute Nouveau
Re : Outils de suppression en VBA

Bonjour,

Merci pour votre aide. Cependant, je rencontre des problèmes avec ton code Bruno. ça doit venir de mon côté très certainement. Par rapport aux véhicules qui sont ajoutés, ça plante à cette ligne:

sType = Left(sVal, InStr(1, sVal, "-") - 1)
' Extraire l'immatriculation

avec une erreur d'executin "5: argument ou appel de procédure incorrect

Ensuite avec les véhicules que j'avais déjà rentré manuellement auparavant ça plante à:

.Range("C" & LigF).Select
' Suppression de la ligne après confirmation


De ton côté ça marchait?
 
C

Compte Supprimé 979

Guest
Re : Outils de suppression en VBA

Salut Loic04

Bonjour,
Merci pour votre aide. Cependant, je rencontre des problèmes avec ton code Bruno. ça doit venir de mon côté très certainement. Par rapport aux véhicules qui sont ajoutés, ça plante à cette ligne:
sType = Left(sVal, InStr(1, sVal, "-") - 1)
' Extraire l'immatriculation
avec une erreur d'executin "5: argument ou appel de procédure incorrect
Ensuite avec les véhicules que j'avais déjà rentré manuellement auparavant ça plante à:
.Range("C" & LigF).Select
' Suppression de la ligne après confirmation
Tu as ces problèmes en essayant le fichier envoyé !?

De ton côté ça marchait?
Ben non, je t'ai joins le fichier juste comme ça ... :rolleyes:

Le fichier de MichD peux fonctionner si tu n'utilises plus la feuille "Véhicules"
ou si les 2 feuilles sont scrupuleusement dans le même ordre, car la suppression est indexée sur le numéro de ligne

Perso je n'aime pas utiliser cette méthode, car trop aléatoire

A+
 
C

Compte Supprimé 979

Guest
Re : Outils de suppression en VBA

Re,

J'ai retéléchargé le logiciel et j'ai pu atteindre la messagebox vb Yes No mais ça bug ensuite. Est-ce que ça viendrait du fait que je suis actuellement sur un Excel 97?
Houlaaaa ... il y a des risques effectivement ... ça marchait parfaitement chez moi hier soir

Je viens de tester !?
Manque le "s" à row pour la ligne
Code:
.Rows(LigF).Delete Shift:=xlUp
Put*in de clavier sans fil :mad:

A+
 

Loic04

XLDnaute Nouveau
Re : Outils de suppression en VBA

J'ai rajouté le "s". Le code marche pour les véhicules que j'avais entré manuellement dans ma base de donnée mais les véhicules nouvellement ajoutés ça plante. C'est bizarre vu qu'ils se placent aux mêmes endroits que les véhicules ajoutés manuellement avant que le logiciel ne soit commencé.
ça bug à ce niveau là pour les véhicules ajoutés:

sType = Left(sVal, InStr(1, sVal, "-") - 1)

avec une erreur d'execution "5": argument ou appel de procédure invalide.

Et sur mon PC portable excel 2007, ça plante à

Dlig= .Range("C" & Rows.Count).End(x1Up).Row

erreur d'exécution '1004':

Erreur définie par l'application ou par l'objet.

Cependant, je travaille sur une version copie de secours assez récente. Je vais essayer le code sur la version la plus aboutie bien qu'il n'y ait pas de grande différence.
Edit: Non ça ne change rien

Encore merci et désolé pour le temps que tu consacres à m'aider.
 
C

Compte Supprimé 979

Guest
Re : Outils de suppression en VBA

Re,

ça bug à ce niveau là pour les véhicules ajoutés:
sType = Left(sVal, InStr(1, sVal, "-") - 1)
Attention de bien utiliser la même façon d'enregistrer les véhicules, à savoir
LaMarqueLetype"- " L'immatriculation

Et sur mon PC portable excel 2007, ça plante à
Dlig= .Range("C" & Rows.Count).End(x1Up).Row
Ce n'est pas "x1Up", mais "xLup" :rolleyes:

A+
 
C

Compte Supprimé 979

Guest
Re : Outils de suppression en VBA

Re,

Effectivement tu peux avoir un problème si l'enregistrement du véhicule est différend
de la feuille "parc auto" de celle "véhicules"

Un exemple concret la ligne 14 de "parc auto" - Véhicule = Clio
Ligne 8 de "Véhicule" -> = Renault Clio- 8153 MQ 04
Dans mon code la formulle matricielle correspond à
Code:
=SOMMEPROD(('parc auto'!C3:C85="Renault Clio")*('parc auto'!F3:F85="8153 MQ 04")*(LIGNE('parc auto'!C3:C85)))
Donc dans ce cas
Code:
LigF = Application.Evaluate(sForm)
retourne 0

En revanche je n'ai pas eu incompatibilité de type !?
Sur quel véhicule as-tu essayé ?

A+
 

Loic04

XLDnaute Nouveau
Re : Outils de suppression en VBA

Quand j'ajoute un véhicule, il s'ajoute en même temps sur la feuille "parc auto" et "véhicule" vu que j'ai utilisé ce code:

With Sheets("parc auto")
LigVide = .Range("C" & Rows.Count).End(xlUp).Row + 1 'cherche la première ligne vide en C
.Cells(LigVide, "C") = TextBox1.Value 'Ajoute la valeur de la textbox1 à la colonne C
.Cells(LigVide, "E") = ComboBox1.Value 'Ajoute la valeur de la combobox2 à la ligne E
End With
With Sheets("Véhicules")
LigVide = .Range("B" & Rows.Count).End(xlUp).Row + 1
.Cells(LigVide, "B") = TextBox1.Value
End With




Sur tout ceux ajouté manuellement. Ceux qui ont été ajouté via logiciel, ça plante avant sur la ligne que j'ai indiqué avant.

Mais ne penses-tu pas que le fait de travailler sur 2 bases de données en même temps n'est pas un peu casse-tête? Je veux dire que là je travaille à la fois sur la feuille "parc auto" et la feuille "véhicules" mais p-t serait-il plus judicieux de travailler sur la feuille "parc auto" uniquement.
Je travaille sur 2 feuilles car sur la feuille "parc auto", les colonnes véhicules et immatriculation ne sont pas dans une seule et même cellule et en fait je n'arrivais pas à configurer un combobox pour qu'il affiche non pas les éléments d'une colonne et de deux colonnes. Je n'y arrive d'ailleurs tjs pas et c'est bien dommage car p-t qu'une seule base de donnée et un combox qui listent les élements de deux colonnes serait plus facile pour configurer l'outils de suppression.


Edit: P-t qu'en passant par une formule rowsource plutôt que par la propriété serait plus ergonomique pour la combobox. Par exemple, plutôt que de nommer une plage de cellules par X et ensuite mettre X en propriété rowsource de combobox, on mettrait plutôt qq chose genre:

Me.Combobox1.Additem.rows: A3:A et C3:C . Qq chose comme ça qui puisse prendre à la fois la colonne véhicule etl a colonne immatriculation.
J'avais essayé avec des formules déjà mais la combobox1 n'affichait alors p-t que malgré ma configuration, il restait des conflits entre les différents rowsource. Je ne sais pas. Je suis un peu paumé là :S
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 202
Messages
2 086 180
Membres
103 152
dernier inscrit
Karibu