USERFORM probleme remplissage cellule laissée vide

Bosco13

XLDnaute Occasionnel
Bonsoir le forum,

Jai crée 3 useforms qui s'ouvre quand je clic sur une cellule, le remplissage fonctionne

colonne A B et E

Si je laisse une des cellules vide car je n'ai pas les infos lorsque je veux la compléter la valeur ne va pas dans la cellule mais ce range a la dernière cellule vide

je ne sais pas comment faire pour que la valeur aille a la bonne place.


Je vous joint le fichier d'essai
et vous remercie d'avance de votre aide

@@@++++ Bosco
 

Pièces jointes

  • Userform probleme remplissage si cellule vide.xls
    184.5 KB · Affichages: 49

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : USERFORM probleme remplissage cellule laissée vide

Bonsoir Bosco13, jpb388,

Un essai dans le fichier joint, Seul le code de l'USF "CHOIX_CLIENT" a été modifié.

Le principe:
  • Si la ligne n'est pas vide, alors on modifie le client de cette ligne.
  • Si la ligne est vide, alors on recherche la première ligne vide du tableau et on y inscrit le client.
VB:
Private Sub CommandButton2_Click()
Dim LigneEstVide As Boolean, xrg As Range

If ListBox1.ListIndex >= 0 Then
  'un client est sélectionné dans la listbox1
  'on vérifie si la ligne courante du tableau est vide ou non
  'si oui, alors on rajoute le client à la première ligne vide
  'sinon on modifie la cellule active.
  With Sheets("COMMANDES")
    Set xrg = .Range(.Cells(ActiveCell.Row, "a"), .Cells(ActiveCell.Row, "k"))
    LigneEstVide = Application.WorksheetFunction.CountA(xrg) = 0
    If Not LigneEstVide Then
      'l'enregistrement existe déjà
      ActiveCell = ListBox1
    Else
      'on recherche la première ligne vide
      Set xrg = .Cells(11, "a").Resize(, Columns("a:k").Count)
      Do
        Set xrg = xrg.Offset(1)
        LigneEstVide = Application.WorksheetFunction.CountA(xrg) = 0
      Loop Until LigneEstVide
      xrg(1, 1) = ListBox1
    End If
  End With
End If
' ferme formulaire
Unload Me
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  CommandButton2_Click
End Sub

Edit: personnellement, je trouve l'emploi du SelectionChange comme évènement déclenchant assez pénible, je préfère en général utiliser BeforeDoubleClick (ce n'est qu'une question de goût et on sait que les goûts et les couleurs... :) ):
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Not Intersect(Target, Range("A12:A65000")) Is Nothing Then
    Cancel = True: CHOIX_CLIENT.Show
  ElseIf Not Intersect(Target, Range("B12:B65000")) Is Nothing Then
    Cancel = True: CHOIX_ETABLISSEMENT.Show
  ElseIf Not Intersect(Target, Range("E12:E65000")) Is Nothing Then
    Cancel = True: CHOIX_PREPARATEUR.Show
  End If
End Sub
 

Pièces jointes

  • Bosco13-Userform probleme remplissage si cellule vide v1.xls
    207 KB · Affichages: 52
Dernière édition:

jpb388

XLDnaute Accro
Re : USERFORM probleme remplissage cellule laissée vide

Bonjour à tous,Bosco13, mapomme

voici un exemple pour établissement

Code:
Private Sub CommandButton2_Click()
'ranger  Etablissement
  ActiveCell = ListBox1.Value
  'ferme formulaire
  Unload Me
End Sub
 

Bosco13

XLDnaute Occasionnel
Re : USERFORM probleme remplissage cellule laissée vide

Bonjour mapomme, jpb388, Le Forum


un grand merci a tous les deux pour votre aide.

Je verifie tous cela cet apres midi et je vous tiens au courant.


mapomme : effectivement dans mon fichier final qui est plus complexe c'est bien la procedure
Private Sub Worksheet_BeforeDoubleClick
que j'utilise

Merci a vous deux

@@@@+++ Bosco
 

Bosco13

XLDnaute Occasionnel
Re : USERFORM probleme remplissage cellule laissée vide

Re mapomme, Le forum

Désolé une question ( je suis encore débutant en VBA)

Je ne comprend pas pourquoi parle de la colonne K puisque cela ne concerne que le remplissage de la colonne A
Set xrg = .Range(.Cells(ActiveCell.Row, "a"), .Cells(ActiveCell.Row, "k"))

et en plus cela ne me met que le nom et pas le prénom

il y a surement une subtilité que je ne saisi pas encore.........!

merci d'avance

@@@ + Bosco
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : USERFORM probleme remplissage cellule laissée vide

Bonsoir Bosco13,

(...) cela ne me met que le nom et pas le prénom (...)

C'est un oubli. Réparé dans le fichier joint. On utilise le code:
VB:
ActiveCell = ListBox1 & " " & ListBox1.Column(1, ListBox1.ListIndex)

(...) pourquoi parle de la colonne K puisque cela ne concerne que le remplissage de la colonne A
Set xrg = .Range(.Cells(ActiveCell.Row, "a"), .Cells(ActiveCell.Row, "k")) (...)

En fait j'ai un peu compliqué les choses (ça m'arrive assez souvent :mad:) en considérant qu'on pouvait avoir des lignes avec quelques informations saisies mais où il manque le nom et prénom du client (comme les lignes 14 et 16).

Pour distinguer si c'est un client dont la ligne a déjà été créée mais où il manque le nom du client( ligne 14 ou 16) d'une ligne complétement vide (ligne au delà de 21 sauf ligne 26), je teste le nombre de cellules de la ligne qui ne sont pas vides (colonne A à K).

Si la ligne n'est pas vide, on place le nom et prénom du client dans activecell.

Sinon si la ligne est vide, cela signifie que c'est un nouveau client. On recherche la première ligne vide et on y place le nom et prénom du client (ici ligne 22 et non 27).
 

Pièces jointes

  • Bosco13-Userform probleme remplissage si cellule vide v2.xls
    208 KB · Affichages: 46

Bosco13

XLDnaute Occasionnel
Re : USERFORM probleme remplissage cellule laissée vide

RE mapomme, Le forum

Un grand merci cela fonctionne a merveille maintenant.

et surtout pour tes explications, je ne suis pas tres fort en vba mais je commence a enregistrer pas mal de chose.

je mets tous cela dans le fichier définitif et je vous tiens au courant

Le DINANNAIS que je suis vous remercie

@@@@@+++++Bosco
 

Discussions similaires

Réponses
4
Affichages
186
Réponses
3
Affichages
268