article

  • Initiateur de la discussion grosdede
  • Date de début
G

grosdede

Guest
Bonjour a tous en ce jour de repos un petit probléme a vous exposer et pour finir mon travail dans un tableau j'ai 4 colonnes code;designation;untite,prix comment ajouter un produits tout en evitant les doublons merci de votre réponse
 

grosdede

XLDnaute Nouveau
merci pour ton aide elle ma ete tres precieuse je vais finir de travailler sur mon programme pour mieux ce connaitre je suis artisant et je fabrique un progamme pour les bon de commande et suivi de chantier car excel me passionne mais c'est tres dur quand on est un autodidact alors des fois je galere je suis aussi passionner de rugby
 

jp14

XLDnaute Barbatruc
porcinet82 écrit:
re,

Je croyais aussi etre bigleux comme mon ami PierreJean, tu me rassures donc. :p

Sinon PierreJean, une tite question, a quoi sert la ligne suivante dans ton code If IsEmpty(target) Then Exit Sub. Je ne saisie pas tres bien a quoi sert le IsEmpty(target).

Merci d'avance,

@+
Bonsoir porcinet82, grosdede, pierrejean.

De plus cette ligne permet de sortir de la procédure s'il n'y a rien à faire, elle permet donc un gain de temps.

JP
 

porcinet82

XLDnaute Barbatruc
re, Salut Jp14,

MErci de vos réponse, mais pourrais-tu préciser un peu jp, qu'est ce que tu entends par s'il n'y a rien a faire. Je comprend bien que IsEmpty fonctionne comme un booléen, mais je ne vois pas à quoi elle sert précisement ni dans ce bout de code (malgré les quelques éléments apportés par PierreJean) ni ailleur. :pinch:

Si tu as d'autres explications a me fournir, je suis preneur, mais en tout cas merci.

@+
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir grosdede, Tibo, Monique, PierreJean, Romain et JP :)

Je ne sais pas quelle incompatibilité de type Pierre a rencontré lors de ses tests, mais ce qui est certain, c'est que si tu supprimes les instructions contenant le test IsEmpty(Target), tu rencontreras des problèmes en supprimant un code dans une autre ligne que la dernière du tableau.

C'est logique dans la mesure où le test est effectué jusqu'à l'avant dernière ligne de ce tableau : donc en testant les valeurs, on va aussi tester 'Target' et on va trouver que Target.Value = Target.Value .

L'incompatibilité de type que j'entrevois peut venir d'une sélection multiple : sélection des colonnes A à D d'une ligne et appui sur Suppr : BINGO ! Et là, le test sur IsEmpty ne change rien à l'affaire. Il faut alors trouver une parade et l'on peut penser que s'il y a changement alors que plusieurs cellules sont sélectionnées, il est vraisemblable qu'il s'agisse d'une suppression.

Quoiqu'il en soit, gérer le cas de sélection multiple alourdirait un peu trop la procédure. Un code comme celui-ci pourrait faire l'affaire pour exclure le cas en question :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim Cell As Range
'
  With Target
    If .Count > 1 Or IsEmpty(.Value) Or .Column > 2 Then Exit Sub

    Set Cell = Columns(.Column).Find(.Value, Target, xlValues, _
                xlWhole, , xlNext, True)
    If Cell.Address ‹› .Address Then
      Cell.Select
      MsgBox IIf(.Column = 1, 'ce code', 'cette désignation') & _
                ' existe deja ici'
    End If

  End With

End Sub

Voilà, on exclut le cas d'une plage de plusieurs cellules :ermm:

A+ ;)
 

Discussions similaires

Réponses
2
Affichages
867

Statistiques des forums

Discussions
312 364
Messages
2 087 621
Membres
103 623
dernier inscrit
Moltes1502