IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Afficher la ligne et la colonne correspondant à deux variables


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2003
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 70
    Points : 32
    Points
    32
    Par défaut Afficher la ligne et la colonne correspondant à deux variables
    Bonjour,

    Afin de perfection mon fichier et de rendre la vie plus facile à mes chefs, je désire que lorsqu'un employé saisie des heures supplémentaires, cela les note directement à la bonne place ( c'est à dire à la ligne correspondant à son nom et à la date correspondante.)

    J'ai crée un UserForm permettant la saisie des heures supplémentaire. (voir image)

    Nom : 2017-10-16 (1).png
Affichages : 379
Taille : 316,6 Ko

    Lorsque j'insère la date cela sélection la bonne case selon la date. (Cela fonctionne avec le code ci-dessous)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Private Sub MaDate_AfterUpdate()
    Dim DateRecherchee As Date
    Dim AnneeEnCours As String
    Dim chainevide As String
    Dim Nomfichier As String
     
    Nomfichier = ThisWorkbook.Name
    Nomfichier = Left(Nomfichier, Len(Nomfichier) - 5)
    AnneeEnCours = Format(Worksheets("2018").Range("AA1").Value, "yyyy")
    chainevide = "--.--." & AnneeEnCours
     
    UnprotectSheet
    Application.ScreenUpdating = False
     
    On Error GoTo Invalide
     
    UnprotectSheet
    DateRecherchee = Me.MaDate.Value
    Application.GoTo Reference:=Worksheets("2018").Range("AB11:ACD11").Find(DateRecherchee).Offset(14, 0), Scroll:=False
    ProtectSheet
     
    Exit Sub
     
    Invalide:
            MsgBox ("Cette date n'est pas valide pour le fichier " & Nomfichier & " ."), vbCritical
            Me.MaDate.Value = chainevide
     
    End Sub
    Je désire maintenant que lorsque l'employé sélectionne son nom dans la ComboBox, cela sélectionne une ligne sous son nom. Ici ça ne fonctionne pas et me met une erreur d’exécution 91 :-(

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Private Sub ChoixAmbu_Change()
    Dim NomRecherche As String
    Dim Nomfichier As String
     
    NomRecherche = Me.ChoixAmbu.Value
    Nomfichier = ThisWorkbook.Name
    Nomfichier = Left(Nomfichier, Len(Nomfichier) - 5)
     
    Application.ScreenUpdating = False
     
    On Error GoTo Invalide
    UnprotectSheet
     
    Application.GoTo Reference:=Worksheets("2018").Range("A25:A183").Find(NomRecherche).Offset(1, 2), Scroll:=False ' <----- ligne soulignée en jaune après erreur d’exécution 91
     
    Exit Sub
    Invalide:
            MsgBox ("Cet utilisateur n'est pas valide pour le fichier " & Nomfichier & " ."), vbCritical
    End Sub

    En finalité, j'aimerai que lorsque la date, le nom et que le reste des informations de l'UserForm sont entrées, cela copie le résultat du calcul d'heures supplémentaire à la bonne place.

    Déjà un grand merci pour votre aide.

    Cordialement

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    avec find dans la colonne "M" cela devrait faire l' affaire non? pour sélectionner la ligne

    bien que la capture soit pas très net je vois quelque chose d'écrit en subscript dans chaque cellule ambulancier forcement le find ne fonctionnera pas avec find(comboboxX.value) puisque la combobox contient que l'ambulancier pas ce qui'il y a écrit en subscript peut etre avec " xlpart" en argument du find mais c'est pas propre et sur

    pour les date
    tu fait un find sur le format text du mois sur la ligne des mois en lettre qui est une fusion tu prend le mergearea.offset(1,0) et tu a ta plage ou se trouve les jour de ce mois la
    tu n'a plus qu' faire le find sur le jour

    ce sont des choses aux quelles on pense avant dans la conception surtout quand on pilote le sheets a partir d'un userform
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour à toi, Bonjour au Forum

    En simplifiant et en utilisant la méthode Find suivant l'aide en ligne.

    Option Explicit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub ChoixAmbu_Change()
     
    Application.ScreenUpdating = False
     
    Dim trouve As Range
    Set trouve = Worksheets("2018").Range("A25:A183").Find(ChoixAmbu.Value)
     
    If trouve Is Nothing Then
        MsgBox ("Cet utilisateur n'est pas valide pour le fichier " & ThisWorkbook.Name & " ."), vbCritical
    Else
        Application.GoTo Reference:=trouve.Offset(1, 2), Scroll:=False
    End If
     
    Set trouve = Nothing
     
    End Sub
    Remarque, tu n'as aucune obligation de sélectionner des cellules pour leur affecter des valeurs.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  4. #4
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Pardon, Patrick, pour ce télescopage.
    Ton post est bien entendu à considérer avant tout.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    regarde cet exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CommandButton1_Click()
    mois = Format(TextBox1.Value, "mmmm")
    Set rangemois = Rows("1:1").Find(mois, lookat:=xlValue)
    jour = Val(Format(TextBox1, "dd"))
    rowdubonhomme = Range("A4:A10").Find(ComboBox1.Value, lookat:=xlValue).Row
    Set plagejour = ActiveSheet.Range(Replace(rangemois.MergeArea.Address, rangemois.MergeArea.Row, 2))
    colonnedujour = plagejour.Find(jour, lookat:=xlValue).Column
    Cells(rowdubonhomme, colonnedujour).Select
    End Sub
    Private Sub UserForm_Activate()
    ComboBox1.List = Range("A4:A10").Value
    End Sub
    Nom : demo.gif
Affichages : 386
Taille : 466,6 Ko

    fichier en exemple
    Fichiers attachés Fichiers attachés
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Nouveau membre du Club
    Inscrit en
    Septembre 2003
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 70
    Points : 32
    Points
    32
    Par défaut
    Merci pour votre aide,

    J'avais fait une erreur...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.GoTo Reference:=Worksheets("2018").Range("A25:A183").Find(NomRecherche).Offset(1, 2), Scroll:=False ' <----- ligne soulignée en jaune après erreur d’exécution 91
    Alors que c'est "AA25:AA183" et non "A25:A183"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.GoTo Reference:=Worksheets("2018").Range("AA25:AA183").Find(NomRecherche).Offset(1, 2), Scroll:=False
    Maintenant il faut que j'arrive a me placer sur la cellule correspondant au la date et à l'employé, pour finalement y noter le résultat du calcul lorsque je ferme mon UserForm en cliquant sur le bouton envoyé (cela envoie également un mail au chef pour annoncer les heures supplémentaires.)

    Donc je pense que tout va se dérouler en cliquant sur le bouton Envoyer. Mais comment?

    Merci à vous

  7. #7
    Nouveau membre du Club
    Inscrit en
    Septembre 2003
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 70
    Points : 32
    Points
    32
    Par défaut
    Merci @patricktoulon, je vais tester cela.

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    oui bien evidement la bonne blague adapter le depart a ton cas n'ayant pas ton fichier je me suis fait un exemple vite fait resemblant au tiens
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Nouveau membre du Club
    Inscrit en
    Septembre 2003
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 70
    Points : 32
    Points
    32
    Par défaut
    J'ai vu votre fichier vite fait.

    J'essaie depuis 8h ce matin en vain et vous en quelques minutes c'est fait.

    c'est beau

  10. #10
    Nouveau membre du Club
    Inscrit en
    Septembre 2003
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 70
    Points : 32
    Points
    32
    Par défaut
    J'ai essayé d'adapter votre code mais ça ne marche pas. cela me met Erreur définie par l'application ou définie par l'objet ici,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(NomAmbulancier, Colonnedujour).Select
    Ensuite j'aimerai arriver une cellule en dessous de celle sélectionner via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(NomAmbulancier, Colonnedujour).Select
    Et y copier mon résultat de calcul

    J'ai fait un test avec un MsgBox et cela me retourne bien des valeurs.
    Exemple si je met 01.01.2018 et ambulancier 1, mon message box me retourne Nom en ligne 49 / Date en colonne 29

    Merci beaucoup de votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     
    Private Sub Bouton_Valider_Click()
    Dim DateRecherchee As Date
    Dim NomRecherche As String
    Dim Nomfichier As String
     
    Dim NomAmbulancier As String
    Dim Colonnedujour As String
     
    Dim CopieCalcul As String
     
    DateRecherchee = Me.MaDate.Value
    NomRecherche = Me.ChoixAmbu.Value
    Nomfichier = ThisWorkbook.Name
    Nomfichier = Left(Nomfichier, Len(Nomfichier) - 5)
     
    CopieCalcul = Me.ResultatHS.Caption
     
    Application.ScreenUpdating = False
     
    UnprotectSheet
     
    NomAmbulancier = Worksheets("2018").Range("AA25:AA183").Find(NomRecherche, lookat:=xlValue).Row
    Colonnedujour = Worksheets("2018").Range("AB11:ACD11").Find(DateRecherchee, lookat:=xlValue).Column
     
    MsgBox ("Nom en ligne " & NomAmbulancier & " / Date en colonne " & Colonnedujour _
                        & vbCrLf & vbCrLf & _
                        "La valeur copié sera " & CopieCalcul & ".")
     
    Cells(NomAmbulancier, Colonnedujour).Select 
     
    ProtectSheet
     
    End Sub

  11. #11
    Nouveau membre du Club
    Inscrit en
    Septembre 2003
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 70
    Points : 32
    Points
    32
    Par défaut
    Bonjour la communauté,

    Je me permet de crier à l'aide pour mon problème. Je ne sais pas du tout comment faire.

    Merci à vous.


    Citation Envoyé par MicKRub Voir le message
    J'ai essayé d'adapter votre code mais ça ne marche pas. cela me met Erreur définie par l'application ou définie par l'objet ici,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(NomAmbulancier, Colonnedujour).Select
    Ensuite j'aimerai arriver une cellule en dessous de celle sélectionner via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(NomAmbulancier, Colonnedujour).Select
    Et y copier mon résultat de calcul

    J'ai fait un test avec un MsgBox et cela me retourne bien des valeurs.
    Exemple si je met 01.01.2018 et ambulancier 1, mon message box me retourne Nom en ligne 49 / Date en colonne 29

    Merci beaucoup de votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     
    Private Sub Bouton_Valider_Click()
    Dim DateRecherchee As Date
    Dim NomRecherche As String
    Dim Nomfichier As String
     
    Dim NomAmbulancier As String
    Dim Colonnedujour As String
     
    Dim CopieCalcul As String
     
    DateRecherchee = Me.MaDate.Value
    NomRecherche = Me.ChoixAmbu.Value
    Nomfichier = ThisWorkbook.Name
    Nomfichier = Left(Nomfichier, Len(Nomfichier) - 5)
     
    CopieCalcul = Me.ResultatHS.Caption
     
    Application.ScreenUpdating = False
     
    UnprotectSheet
     
    NomAmbulancier = Worksheets("2018").Range("AA25:AA183").Find(NomRecherche, lookat:=xlValue).Row
    Colonnedujour = Worksheets("2018").Range("AB11:ACD11").Find(DateRecherchee, lookat:=xlValue).Column
     
    MsgBox ("Nom en ligne " & NomAmbulancier & " / Date en colonne " & Colonnedujour _
                        & vbCrLf & vbCrLf & _
                        "La valeur copié sera " & CopieCalcul & ".")
     
    Cells(NomAmbulancier, Colonnedujour).Select 
     
    ProtectSheet
     
    End Sub

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Dim dicoDate As Object, dicoAgents As Object
     
    Private Sub CommandButton1_Click()
    ThisWorkbook.Sheets("Feuil1").Cells(dicoAgents(Me.ComboBox1.Value), dicoDate(CDate(TextBox1))) = "X"
    End Sub
     
     
    Private Sub UserForm_Initialize()
    Set dicoDate = CreateObject("Scripting.Dictionary")
    Set dicoAgents = CreateObject("Scripting.Dictionary")
    With ThisWorkbook.Sheets("Feuil1").UsedRange
        For C = 2 To .Columns.Count
           dicoDate(.Cells(2, C).Value) = C
        Next
         For l = 3 To .Rows.Count
           dicoAgents(.Cells(l, 1).Value) = l
        Next
       Me.ComboBox1.List = Range(.Cells(2, 1), .Cells(.Rows.Count, 1)).Value
    End With
    TextBox1 = "01/01/2017": Me.ComboBox1.ListIndex = 1
    End Sub
    Fichiers attachés Fichiers attachés

  13. #13
    Nouveau membre du Club
    Inscrit en
    Septembre 2003
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 70
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Dim dicoDate As Object, dicoAgents As Object
     
    Private Sub CommandButton1_Click()
    ThisWorkbook.Sheets("Feuil1").Cells(dicoAgents(Me.ComboBox1.Value), dicoDate(CDate(TextBox1))) = "X"
    End Sub
     
     
    Private Sub UserForm_Initialize()
    Set dicoDate = CreateObject("Scripting.Dictionary")
    Set dicoAgents = CreateObject("Scripting.Dictionary")
    With ThisWorkbook.Sheets("Feuil1").UsedRange
        For C = 2 To .Columns.Count
           dicoDate(.Cells(2, C).Value) = C
        Next
         For l = 3 To .Rows.Count
           dicoAgents(.Cells(l, 1).Value) = l
        Next
       Me.ComboBox1.List = Range(.Cells(2, 1), .Cells(.Rows.Count, 1)).Value
    End With
    TextBox1 = "01/01/2017": Me.ComboBox1.ListIndex = 1
    End Sub

    Merci pour votre exemple,

    Malheureusement je n'arrive pas (ne comprends pas comment) l'intégré dans ma situation.

  14. #14
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Si je peux me permettre dysorthographie, juste un détail.

    Ne gagnerait-on pas à déclarer les dictionnaires tels quels

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim mondico as New Scripting.Dictionary
    Ce qui permet, en saisie semi-automatique, d'avoir accès à toutes les méthodes et propriétés des dictionnaires.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  15. #15
    Invité
    Invité(e)
    Par défaut
    si mais il faut bricoler le référence au risque d'avoir des problèmes de versions en passant d'une machine à une autre! c'est pour cela que j'évite ce genre de déclaration.

    Citation Envoyé par MicKRub Voir le message
    Merci pour votre exemple,

    Malheureusement je n'arrive pas (ne comprends pas comment) l'intégré dans ma situation.
    dessolé je pensai avoir mis un fichier d'exemple en pièce jointe!

  16. #16
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    il faut bricoler le référence
    Excuse-moi mais je ne vois pas.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  17. #17
    Invité
    Invité(e)
    Par défaut
    Nom : Sans titre.png
Affichages : 245
Taille : 22,3 Ko

  18. #18
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Ok. Je pensais à une version de Library.
    Je n'ai pas ce cas pour les utilisateurs de mes applicatifs.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  19. #19
    Nouveau membre du Club
    Inscrit en
    Septembre 2003
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 70
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    si mais il faut bricoler le référence au risque d'avoir des problèmes de versions en passant d'une machine à une autre! c'est pour cela que j'évite ce genre de déclaration.



    dessolé je pensai avoir mis un fichier d'exemple en pièce jointe!

    Si si il y avait bien un fichier. J'ai essayer de comprendre comment l'adapter à mon cas mais je ne comprend pas. (je cherche sûrement à faire quelque chose qui dépasse mes capacités).

    Je vais essayé de vous expliquer au mieux.

    1. Dans ma feuille "2018", j'ai tous les mois qui y sont afficher. Chaque jour est composé de deux colonnes (pour l'horaire de jour et de nuit)
    2. En lignes 11 j'ai toutes les dates de chaque jours, doublées donc... de AB11 à ACD11.
    3. La listes des ambulanciers est afficher dans une feuille nommée "Listes" de la colonne B de la ligne B9 à B44.
      Donc je peux donné ces valeurs à ma Combobox de mon UserForm "New_HS" nommée ChoixAmbu
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ChoixAmbu.List = Worksheets("Listes").Range("B9:B44").Value


    Maintenant dans mon UserForm "New_HS" j'aimerai que lorsque je clique sur le bouton [Validé H.S.] cela note le résultat de mon calcul d'heure, MAIS une ligne en dessous de la ligne correspondant au nom de l'ambulancier (comme fait manuellement sur l'image ci-dessous)

    Nom : Sans titre.jpg
Affichages : 331
Taille : 305,8 Ko

    Actuellement avec le code du bouton [Validé H.S.] j'ai mis une MsgBox pour voir les valeurs que cela retour

    Nom : Sans titre2.jpg
Affichages : 235
Taille : 34,9 Ko

    Pour mon exemple: Nom Ambulancier 2, Date 03.01.2018. Cela me retour, nom en Ligne 53 et date en colonne 33, ce qui est correct bien que je souhaite arrivé en ligne 54 pour y noté mon résultat de calcul.

    Cela me met une erreur d’exécution "1004"

    Nom : Sans titre3.jpg
Affichages : 238
Taille : 123,6 Ko


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    Private Sub Bouton_Valider_Click()
    Dim DateRecherchee As Date
    Dim NomRecherche As String
    Dim Nomfichier As String
     
    Dim NomAmbulancier As String
    Dim Colonnedujour As String
     
    Dim CopieCalcul As String
     
    'On Error Resume Next
     
    DateRecherchee = Me.MaDate.Value
    NomRecherche = Me.ChoixAmbu.Value
    Nomfichier = ThisWorkbook.Name
    Nomfichier = Left(Nomfichier, Len(Nomfichier) - 5)
    CopieCalcul = Me.ResultatHS.Caption
     
    Application.ScreenUpdating = False
     
     
    UnprotectSheet
     
    NomAmbulancier = Worksheets("2018").Range("AA25:AA183").Find(NomRecherche, lookat:=xlValue).Row
    Colonnedujour = Worksheets("2018").Range("AB11:ACD11").Find(DateRecherchee, lookat:=xlValue).Column
     
    MsgBox ("Nom en ligne " & NomAmbulancier & " / Date en colonne " & Colonnedujour _
            & vbCrLf & vbCrLf & _
            "La valeur copié sera " & CopieCalcul & ".")
     
     
    Cells(NomAmbulancier, Colonnedujour).Select
     
    ProtectSheet
     
    End Sub
    Voilà voilà, j'espère ne pas trop vous embêter et que quelqu'un pourra m'aider.

    C'est la dernière chose que j'aimerai faire pour finir mon fichier et l'utilisé pour préparer l'année prochaine.

    Salutations et merci.
    Images attachées Images attachées  

  20. #20
    Invité
    Invité(e)
    Par défaut
    dans b2 jai la valeur 01/01/2017 au format jj
    dans C2 j'ai la formule =B2+1; D2=C2+1; etc...au format jj
    dans B1 =MOIS(B2) au format Mmmm
    dans initialisation du UserForm

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     For C = 2 To .Columns.Count
           dicoDate(.Cells(2, C).Value) = C
        Next
    dicoDate("01/01/2017") =2 c'est dans mon exemple la colonne 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For l = 3 To .Rows.Count
           dicoAgents(.Cells(l, 1).Value) = l
        Next
    dicoAgents("Tous ceux qui le veulent") =5 toujours dans mon exemple
    cells(dicoDate("01/01/2017") ,dicoAgents("Tous ceux qui le veulent")) ces la cellule cells(5,2)

    Nom : Sans titre.png
Affichages : 234
Taille : 34,8 Ko

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/02/2013, 19h17
  2. Réponses: 3
    Dernier message: 12/11/2010, 23h14
  3. [VB.net 2005] Définir une valeur nulle dans ma comboBox
    Par WriteLN dans le forum Framework .NET
    Réponses: 4
    Dernier message: 04/04/2008, 17h11
  4. Comment afficher une valeur contenue dans une variable ?
    Par manubrard dans le forum Langage
    Réponses: 5
    Dernier message: 20/02/2006, 15h56
  5. Ne pas afficher une ligne selon une valeur
    Par uloaccess dans le forum Access
    Réponses: 3
    Dernier message: 18/11/2005, 14h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo