Saisir tableau d'après Userform / intersection suiv. condition

bermars13 Messages postés 3 Statut Membre -  
 bermars13 -
J'ai un Userform qui va permettre au personnel de pointer suivant :
- Une date TextBox
- Une activité ListBox


Mon problème c'est de remplir un tableau à une intersection Date en ligne colonne A et les activités en titre de colonne B, C, D... Le temps correspondant.

Pouvez-vous m'aider?

4 réponses

  1. jc80 Messages postés 5063 Date d'inscription   Statut Membre Dernière intervention   1 443
     
    Bonjour

    Plutot que de mettre des photos qui sont inexploitables pour faciliter
    le travail,il est préférable de mettre un exemplaire vierge de votre fichier.
    Pour transmettre un fichier, il faut passer par un site de pièce jointe tel que cjoint.com

    Va sur ce site : https://www.cjoint.com/
    Clic sur parcourir,
    Cherche ton fichier,
    clic sur ouvrir,
    Clic sur "Créer le lien cjoint",
    Copier le lien,
    Revenir ici le coller dans une réponse..
    Cordialement
    0
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonsoir bermars

    1) Nommer les listbox et texbox de l'userform (c'est plus facile pour si retrouver dans les formules
    avec par ex la listbox nommée activ, le etxtbox date nommé datep, le textbox heure nommée nbH et le textbox objet nommé nbO

    2) Forcer le format date à la sortie du textbox datep avec ces lignes:
    Private Sub datep_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    datep.Value = Format(datep.Value, "dd/mm/yyyy")
    End Sub


    3) dans la macro associée au bouton Saisir on retrouve les colonne et ligne avec MATCH (équivalent VBA d'EQUIV) puis on inscrit dans les cellules correspondantes :
    col = Application.WorksheetFunction.Match(activ.List(activ.ListIndex), Sheets("Pointage modèle").Range("4:4"), 0)
    lig = Application.WorksheetFunction.Match(CDbl(CDate(datep.Value)), Sheets("Pointage modèle").Range("A:A"), 0)
    Sheets("Pointage modèle").Cells(lig, col) = nbH
    Sheets("Pointage modèle").Cells(lig, col + 1) = nbO


    Attention il faut que les intitulés de la ligne 4 de Pointage modèle correspondent exactement à ceux de la listbox, ce qui n'est pas le cas actuellement : ACTIVITES 1 dans Listbox mais ACTIVITES1 (sans espace) en B4; donc mettre l'espace avant de lancer la macro !

    Cdlmnt
    Via
    0
  3. bermars13
     
    Merci beaucoup ça fonctionne nickel.
    0