Fonctionnement SPREADSHEET

NoMercy007

XLDnaute Nouveau
Bonjour à vous tous, et à tous mes sauveurs !!!!

Je débute en VBA, je me suis embarqué dans un projet sur lequel j'ai bien avancé, mais maintenant je bloque.
Je joins un fichier Essai à ma demande résumant ma demande.
J'ai 2 feuilles excel DATA et PARAM et un UserForm.
- dans le Userform j'ai une Combo qui me permet de choisir un NOM
- a la selection d'un NOM je désire afficher les lignes trouvées dans le tableau en dessous
- et pour compliquer les choses, j'aimerai pouvoir supprimer une ligne dans ce tableau, ce qui mettrai à jour également la feuille DATA.

Je vous avoue que je me suis noyé dans des tentatives de code du SpreadSheet mais sans succès.

D'avance merci
 

Pièces jointes

  • Essai.xlsm
    18.1 KB · Affichages: 36
  • Essai.xlsm
    18.1 KB · Affichages: 58
  • Essai.xlsm
    18.1 KB · Affichages: 53

PMO2

XLDnaute Accro
Re : Fonctionnement SPREADSHEET

Bonjour,

Pour ce qui concerne
- a la selection d'un NOM je désire afficher les lignes trouvées dans le tableau en dessous
essayez le code suivant
Code:
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim S As Worksheet
Dim SPS As Spreadsheet
Dim R As Range
Dim var
Dim T()
Dim i&
Dim j&
Dim cpt&
'---
Set SPS = Spreadsheet1
SPS.Cells.ClearContents
If ComboBox1 = "" Then Exit Sub
'--- Monte les données correspondantes dans un tableau ---
Set S = Sheets("DATA")
Set R = S.[a1].CurrentRegion
var = R
For i& = 1 To UBound(var, 1)
  If UCase(ComboBox1) = UCase(var(i&, 1)) Then
    cpt& = cpt& + 1
    ReDim Preserve T(1 To UBound(var, 2), 1 To cpt&)
    For j& = 1 To UBound(var, 2)
      T(j&, cpt&) = var(i&, j&)
    Next j&
  End If
Next i&
'--- Inscrit les données trouvées dans la Spreadsheet ---
If cpt& = 0 Then Exit Sub
SPS.Range(SPS.Cells(1, 1), SPS.Cells(UBound(T, 2), UBound(T, 1))) = Application.WorksheetFunction.Transpose(T)
End Sub

Private Sub UserForm_Activate()
Dim S As Worksheet
'---
Set S = Sheets("PARAM")
ComboBox1.List = S.Range("A2:A" & S.Cells(Application.Rows.Count, 1).End(xlUp).Row).Value
End Sub
 

Pièces jointes

  • Essai_pmo.xlsm
    23.8 KB · Affichages: 34
  • Essai_pmo.xlsm
    23.8 KB · Affichages: 49

NoMercy007

XLDnaute Nouveau
Re : Fonctionnement SPREADSHEET

Bonsoir

Tout fonctionne parfaitement, j'ai trouvé la solution pour ce qui concerne les autres questions.
Par contre dans le remplissage du tableau j'ai en colonne B une date qui s'affiche toujours en format anglais, la source est pourtant en francais. J'ai tenté FORMAT ("dd/yy/aaaa") mais sans succès.
Pouvez vous m'aider à nouveau, merci.:D
 

PMO2

XLDnaute Accro
Re : Fonctionnement SPREADSHEET

Par contre dans le remplissage du tableau j'ai en colonne B une date qui s'affiche toujours en format anglais, la source est pourtant en français.
Bonjour,

Peut être en transformant la donnée Date en String en ajoutant une quote devant ( ' )
Essayez avec le code modifié ci-dessous (voir le passage cerné par des °°°)
Code:
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim S As Worksheet
Dim SPS As Spreadsheet
Dim R As Range
Dim var
Dim T()
Dim i&
Dim j&
Dim cpt&
'---
Set SPS = Spreadsheet1
SPS.Cells.ClearContents
If ComboBox1 = "" Then Exit Sub
'--- Monte les données correspondantes dans un tableau ---
Set S = Sheets("DATA")
Set R = S.[a1].CurrentRegion
var = R
For i& = 1 To UBound(var, 1)
  If UCase(ComboBox1) = UCase(var(i&, 1)) Then
    cpt& = cpt& + 1
    ReDim Preserve T(1 To UBound(var, 2), 1 To cpt&)
    For j& = 1 To UBound(var, 2)
    
      '°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
      '°°°             Exception : cas d'une date             °°°
      '°°° On force la date en string en ajoutant une quote ' °°°
      If IsDate(var(i&, j&)) Then var(i&, j&) = "'" & var(i&, j&)
      '°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
    
      T(j&, cpt&) = var(i&, j&)
    Next j&
  End If
Next i&
'--- Inscrit les données trouvées dans le Spreadsheet ---
If cpt& = 0 Then Exit Sub
SPS.Range(SPS.Cells(1, 1), SPS.Cells(UBound(T, 2), UBound(T, 1))) = Application.WorksheetFunction.Transpose(T)
End Sub

Private Sub UserForm_Activate()
Dim S As Worksheet
'---
Set S = Sheets("PARAM")
ComboBox1.List = S.Range("A2:A" & S.Cells(Application.Rows.Count, 1).End(xlUp).Row).Value
End Sub
 

Discussions similaires

Réponses
4
Affichages
218

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz