Userform : insérer contenu de cellules

Excel-lent

XLDnaute Barbatruc
Bonjour,

Après l'apprentissage des bases du VBA, je m'attaque aux USERFORM. J'ai consulté, essayé de comprendre, testé les différentes techniques expliquées sur le forum mais sans succès!

Si quelqu'un pouvait m'aider, ce serait sympa.

Voici ce que je souhaite faire :
En cliquant sur le bouton "Ajouter un salarié", l'userform : "NouveauSalarié" s'ouvre.

Dans la partie du bas de l'userform : zone "Salarié(s) déjà existant" je souhaite faire apparaitre dans la zone bleu les cellules de l'onglet "liste du Personnel" [A2:C4].

(pas obligé que la zone bleu soit une "listbox", c'est juste que c'est la dernière technique que j'ai essayé)

Plus précisément, au lieu de C4 j'aimerais : "C" & Range("A65536").End(xlUp).Row

Merci d'avance

PS. : ci-joint le fichier simplifié
 

Pièces jointes

  • Insertion zone d'une feuille dans Userform.zip
    19.7 KB · Affichages: 166
  • Insertion zone d'une feuille dans Userform.zip
    19.7 KB · Affichages: 172
  • Insertion zone d'une feuille dans Userform.zip
    19.7 KB · Affichages: 164

bqtr

XLDnaute Accro
Re : Userform : insérer contenu de cellules

Bonsoir Excel-lent,

Pour charger la Listbox, rajoute cette procédure :
Code:
Private Sub UserForm_Initialize()
  With ListBoxSalDéjàExistant
    .ColumnCount = 3
    .ColumnWidths = "120;120;70"
    .List = Sheets("Liste du Personnel").Range("A2:C" & Sheets("Liste du Personnel").Range("A65536").End(xlUp).Row).Value
  End With
End Sub

Pour faire le test sur les salariés déjà existant, rajoute ceci dans la procédure du CommandButton1 avant Module1.Insertion
Code:
For k = 0 To ListBoxSalDéjàExistant.ListCount - 1
  If UCase(TextBox1) = UCase(ListBoxSalDéjàExistant.List(k)) And _
     UCase(TextBox2) = UCase(ListBoxSalDéjàExistant.Column(1, k)) Then
         MsgBox "Le salarié existe déjà! Cette saisie ne sera pas pris en compte"
         Unload NouveauSalarié
         Exit Sub
  End If
Next
Module1.Insertion

A+
 

Excel-lent

XLDnaute Barbatruc
Re : Userform : insérer contenu de cellules

Bonsoir Bqtr,

C'est vraiment sympa!!!!

La ListBox fonctionne au petit oignon!

Quelle surprise! Tu as même solutionné mon problème de "test si NOM+Prénom déjà existant". Pourtant je n'avais rien demandé! Merci, tu m'as fais gagner quelques heures de tâtonnement!

Merci encore pour tout.
 

Excel-lent

XLDnaute Barbatruc
Re : Userform : insérer contenu de cellules

Bonsoir,

Fichier complété et modifié (cf. ci-joint) grâce à la participation de Bqtr

Pour la partie "mise en forme" de la colonne "Temps de travail par semaine" dans la listbox?

Comment puis-je faire pour avoir la mise en forme suivante #0H00 (la même que dans la feuille excel)?

Je pense que c'est un truc dans ce genre :
LEFT(Cells(ligne,3),LEN(Cells(ligne,3))-2) & "H" & RIGHT(Cells(ligne,3),2)

Mais je n'arrive pas à l'inclure dans le code :
Code:
Private Sub UserForm_Initialize()
  With ListBoxSalDéjàExistant
    .ColumnCount = 3
    .ColumnWidths = "120;120;70"
    .List = Sheets("Liste du Personnel").Range("A2:C" & Sheets("Liste du Personnel").Range("A65536").End(xlUp).Row).Value
  End With
End Sub

Je ne suis pas encore à l'aise avec les ListBox et gestion des tableaux en VBA. Mais je ne désespère pas, il y a un an, je ne connaissais pas du tout le VBA. Grâce à vous je fais maintenant des trucs super sympa.

Si quelqu'un pouvez finir de m'aider sur ce point, ce serait génial.
 

Pièces jointes

  • Insertion zone d'une feuille dans Userform.zip
    20.1 KB · Affichages: 170
  • Insertion zone d'une feuille dans Userform.zip
    20.1 KB · Affichages: 172
  • Insertion zone d'une feuille dans Userform.zip
    20.1 KB · Affichages: 167

bqtr

XLDnaute Accro
Re : Userform : insérer contenu de cellules

Re,

Puisque tu parles de tableau voici un exemple de ce que tu peux faire avec.
Remplace la procédure d'initialisation du USF par celle-ci.

Code:
Private Sub UserForm_Initialize()

Dim Tablo, k As Long

With Sheets("Liste du Personnel")
  Tablo = .Range("A2:C" & .Range("A65536").End(xlUp).Row)
End With

With ListBoxSalDéjàExistant
    .ColumnCount = 3
    .ColumnWidths = "120;120;70"
    For k = 1 To UBound(Tablo)
      .AddItem Tablo(k, 1)
      .List(.ListCount - 1, 1) = Tablo(k, 2)
      .List(.ListCount - 1, 2) = Format(Tablo(k, 3), "00H00")
      '.List(.ListCount - 1, 2) = Left(Tablo(k, 3), Len(Tablo(k, 3)) - 2) & "H" & Right(Tablo(k, 3), 2)
    Next
End With
    
End Sub

On met les données de la feuille dans un tableau qui aura 3 colonnes.
On boucle sur chaque ligne du tableau et chaque élément est mis dans la listbox. L'avantage en faisant ceci c'est que l'on peut dans une certaine mesure formater les données.

A+
 

ElectronInc

XLDnaute Nouveau
Re : Userform : insérer contenu de cellules

Bonjour à tous,

Je trouve votre sujet particulièrement intéressant. J'ai des notions en VBA, et je découvre les Userform.

Je souhaiterai avoir de l'aide pour créer une petite appli de gestion de stock d'une réserve avec Userform et si possible qu'à l'ouverture, l'appli récupère les calculs de stock à partir de ce qui a été calculé la veille pour pouvoir constitué le stock disponible en début de journée :

Je cherche déjà à réussir à insérer des informations ligne par ligne remplies dans la userform avec un bouton ajouter, sur 5 à 6 colonnes.

Pouvez vous m'aiguiller?

Merci.
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG