[VBA Excel] if variable vierge than...

Fermé
Fritz - 6 juin 2008 à 00:08
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 6 juin 2008 à 23:16
Bonjour,
je suis novice en VBA, j'ai un programme scolaire à faire et j'aimerai le peaufiner au maximum.
Je dois éditer une facture en choisissant des pièces de voitures dans des combobox(combox 1 = marque, CbBox2 = modeles, 3 = cylindré,..,CbBox6=ref), puis indiqué la quantité voulu, et en validé pour remplir une facture.
La facture contient 4 colonnes, la quantité, la ref de la pièce , le prix et la quantité x le prix.

Jusque là pas de problème.

Comme ma facture contient plusieurs lignes, je les remplis au fur et à mesure que je choisi mes pièces (1 pièce, 1 ligne).

Seulement j'ai un problème,
Exemple:
si j'ai 3 pièces dans l'ordre suivant dans ma facture, 2 x pièce 1 a la ligne 1, 1x pièce 2 à la ligne 2 et 3x pièce3 à la ligne 3,
ma prochaine pièce va aller automatiquement a la 4eme ligne.
Mais j'aimerai, si je rajoute encore (en +) 1x la pièce 1, que j'ai déja en 1ere ligne de ma facture, j'aimerai avoir 3x pièce 1 en 1ere ligne , et non 2 x pièce 1 en 1ere ligne et 1 x pièce 1 en 4eme ligne.

Pour cela j'ai crée une variable que j'ai appelé Com as Range, qui recherche dans la colonne des ref si la ref de la pièce en question (dans l'exemple la pièce 1) existe déja dans la facture.

Set Com = Sheets("Choix").Range(PlageCom).Find(ComboBox6.Value) 'Recherche de la meme référence que la combobox6
'(La combobox6 est la ref de la pièce voulu, PlageCom 'lintervale dans la facture ou mes ref peuvent aller (B27:B37), et choix la feuille de la facture.)

Ensuite j'aimerai faire une fonction if ... else...pour:

if Com.Value=ComboBox6.Value Than' je regarde si la valeur de Com = la valeur de ComboBox6, si elle n'est pas égale, la pièce n'est pas encore dans la facture.

'ensuite je rajoute la quantité souhaité en plus de la quantité déja présente

Com.Offset(0, -1) = Com.Offset(0, -1) + n 'la case quantité de la facture est la case a gauche de la case ref, n est le nombre de pièce souhaite en +.

Else 'sinon

je descends jusqu'a la premiere ligne vierge de ma facture et rempli la ligne comme il faut...

Mon problème est dans la ligne:
if Com.Value=ComboBox6.Value Than

car, si la ref de la combobox6 est déja dans la facture tout va bien,
mais si la ref n'existe pas, ma variable Com est vide( voir la ligne :
Set Com = Sheets("Choix").Range(PlageCom).Find(ComboBox6.Value)
car il ne trouve pas ComboBox6.value

Donc quand la ref de la pièce que l'on veu ajouté n'existe pas encore, on a l'erreur suivante:
Erreur d'execution '91':

Variable objet ou variable de bloc With non définie.

Et la ligne:

If Com.Value = ComboBox6.Value Then ' est en jaune avec comme message si on passe dessus avec la souris:
Com.Vamue =<Variable objet ou variable de bloc With non définie>
et ComboBox6.value= " la ref de combobox6"



Est il possible de faire
if Com = vide than...
?
Si oui comment?

Ou sinon y a t'il une autre solution pour rajouter la quantité supplémentaire dans la ligne contenant la meme ref, sinon écrire dans la 1ere ligne vierge.

Si vous ne comprenez pas, merci de le dire.

Désolé pour les fautes... il se fait tard... ;-)

Merci


Fritz
A voir également:

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
6 juin 2008 à 23:16
bonjour

Cela fait plusieurs fois que j'attaque ton pavé mais c'est ardu et en fait ta question est assez simple.

Il suffit de remplacer
If Com.Value = ComboBox6.Value Then
par
If Com is nothing Then
0