Deux variables pour une fonction match est ce possible ?

Bonjour,

j'ai un formulaire qui me sert à enregistrer des machines et leur affectation, dans une page "machines" et une page "affectations", mais mon soucis j'arrive à modifier et enregistrer une nouvelle machine sans créer de doublons dans la page "machine", mais dans la page intervention je voulais enregistrer toutes les affectations même si il s'agit e plusieurs fois la même machine voici le code que j'ai mis ( j'y connait pas grand chose en code j'ai fais par similitude en recherchant sur les forums ).

On Error Resume Next
num_ligne = Application.WorksheetFunction.Match(Sheets("formulaire machines").Range("K12"), Sheets("affectation").Range("G:G"), 0)
On Error GoTo 0

La case K12 est la date d'affectation que je remplis dans le "formulaire machine", le G correspond à ma colonne ou la date s'enregistre dans la feuille "affectation", seulement voilà je peut ainsi enregistrer plusieurs fois la même machine mais une seul fois par jour, si j'ai plusieurs machines le même jour celà n'en prend qu'une.

Comment puis je faire pour pouvoir enregistrer plusieurs machines différentes pour un même jour.

Hello,

Post un fichier de test on y verra plus clair

Je joins mon fichier cela ne m'enregistre qu'une seul date dans la page affectation, je ne peux pas enregistrer plusieurs machines pour la même date ( c'est le module valider11 )

Si tu veux ajouter une ligne à ton tableau fait plutôt comme ceci :

Option Explicit
Sub btn_valider11_lanceur()

Dim num_ligne As Range

On Error Resume Next
Sheets("affectation").ShowAllData
On Error GoTo 0

Sheets("affectation").Rows("1:1048576").EntireRow.Hidden = False
Sheets("affectation").Columns("A:XFD").EntireColumn.Hidden = False

Set num_ligne = ActiveWorkbook.Worksheets("affectation").ListObjects("Tableau5").ListRows.Add.Range
With num_ligne
    .Cells(2) = Sheets("formulaire machines").Range("D6")
    .Cells(3) = Sheets("formulaire machines").Range("D8")
    .Cells(4) = Sheets("formulaire machines").Range("I12")
    .Cells(5) = Sheets("formulaire machines").Range("E14")
    .Cells(6) = Sheets("formulaire machines").Range("K14")
    .Cells(7) = Sheets("formulaire machines").Range("K12")
    .Cells(8) = Sheets("formulaire machines").Range("I16")
End With

End Sub

je veux que cela enregistre mais une seul fois par exemple j'appelle la machine m392 je modifie son affectation je valide et cela m'enregistre la nouvelle affectation dans la page affectation par contre, si je ne modifie que les caractéristiques machines et que je clique sur valider, cela m'enregistre les modif dans machines mais pas dans affectation car je n'y ai rien modifier.

je veux que cela enregistre que si j'ai fais des modifications dans la partie affectation

Bonjour,

Comment puis je enregistrer une seule fois le numéro de machine par jour et que je peux enregistrer plusieurs numéros différents sur un même jour. En gros c'est le code que j'aimerais.

Merci d'avance à ceux qui pourront m'aider

Le numéro de machine se trouve où dans ton formulaire machine ? Quelle celulle ?

C'est la cellule E6 ( n Sis)

Si j'ai bien compris :

Option Explicit
Sub btn_valider11_lanceur()

Dim num_ligne As Range
Dim num_mach As String
Dim date_affectation As Date

On Error Resume Next
Sheets("affectation").ShowAllData
On Error GoTo 0

Sheets("affectation").Rows("1:1048576").EntireRow.Hidden = False
Sheets("affectation").Columns("A:XFD").EntireColumn.Hidden = False

With Sheets("formulaire machines")
    num_mach = .[D6]
    date_affectation = .[K12]
End With

If Not IsError(Application.Match(num_mach, Worksheets("affectation").Columns(2), 0)) Then
    If IsError(Application.Match(date_affectation, Worksheets("affectation").Columns(7), 0)) Then
        Set num_ligne = ActiveWorkbook.Worksheets("affectation").ListObjects("Tableau5").ListRows.Add.Range
        With num_ligne
            .Cells(2) = Sheets("formulaire machines").Range("D6")
            .Cells(3) = Sheets("formulaire machines").Range("D8")
            .Cells(4) = Sheets("formulaire machines").Range("I12")
            .Cells(5) = Sheets("formulaire machines").Range("E14")
            .Cells(6) = Sheets("formulaire machines").Range("K14")
            .Cells(7) = Sheets("formulaire machines").Range("K12")
            .Cells(8) = Sheets("formulaire machines").Range("I16")
        End With
    Else: MsgBox "Machine déjà enregistrée ce jour !", vbCritical
    End If
Else:
    Set num_ligne = ActiveWorkbook.Worksheets("affectation").ListObjects("Tableau5").ListRows.Add.Range
    With num_ligne
        .Cells(2) = Sheets("formulaire machines").Range("D6")
        .Cells(3) = Sheets("formulaire machines").Range("D8")
        .Cells(4) = Sheets("formulaire machines").Range("I12")
        .Cells(5) = Sheets("formulaire machines").Range("E14")
        .Cells(6) = Sheets("formulaire machines").Range("K14")
        .Cells(7) = Sheets("formulaire machines").Range("K12")
        .Cells(8) = Sheets("formulaire machines").Range("I16")
    End With
End If

End Sub

Jai copier ce codes dans le module val11 mais cela me fais pareil

pareil c'est à dire ? Erreur sur la fonction Match ?

non cela me mets pas d'erreur mais à chaque clique sur le bouton valider j'enregistre dans le tableau affectation la même machine plusieurs fois dans la même journée

Effectivement il y avait une coquille

Essaye comme ceci :

Option Explicit
Sub btn_valider11_lanceur()

Dim num_ligne As Range
Dim num_mach As String
Dim date_affectation As Date

On Error Resume Next
Sheets("affectation").ShowAllData
On Error GoTo 0

Sheets("affectation").Rows("1:1048576").EntireRow.Hidden = False
Sheets("affectation").Columns("A:XFD").EntireColumn.Hidden = False

With Sheets("formulaire machines")
    num_mach = .[D6]
    date_affectation = .[K12]
End With

If Not IsError(Worksheets("affectation").Columns(2).Find(num_mach, LookIn:=xlValues, LookAt:=xlWhole)) Then
    Set num_ligne = Worksheets("affectation").Columns(7).Find(What:=date_affectation, LookAt:=xlWhole)
    If num_ligne Is Nothing Then
        Set num_ligne = ActiveWorkbook.Worksheets("affectation").ListObjects("Tableau5").ListRows.Add.Range
        With num_ligne
            .Cells(2) = Sheets("formulaire machines").Range("D6")
            .Cells(3) = Sheets("formulaire machines").Range("D8")
            .Cells(4) = Sheets("formulaire machines").Range("I12")
            .Cells(5) = Sheets("formulaire machines").Range("E14")
            .Cells(6) = Sheets("formulaire machines").Range("K14")
            .Cells(7) = Sheets("formulaire machines").Range("K12")
            .Cells(8) = Sheets("formulaire machines").Range("I16")
        End With
    Else: MsgBox "Machine déjà enregistrée ce jour !", vbCritical
    End If
Else:
    Set num_ligne = ActiveWorkbook.Worksheets("affectation").ListObjects("Tableau5").ListRows.Add.Range
    With num_ligne
        .Cells(2) = Sheets("formulaire machines").Range("D6")
        .Cells(3) = Sheets("formulaire machines").Range("D8")
        .Cells(4) = Sheets("formulaire machines").Range("I12")
        .Cells(5) = Sheets("formulaire machines").Range("E14")
        .Cells(6) = Sheets("formulaire machines").Range("K14")
        .Cells(7) = Sheets("formulaire machines").Range("K12")
        .Cells(8) = Sheets("formulaire machines").Range("I16")
    End With
End If

End Sub

Oui cela va mieux mais j'aurais aimé pouvoir modifier les autres paramètres de la machine sans que la la date soit prise en compte. Juste enregistrer chaque changement d'affectation dans la feuille affectation pour avoir un suivi des affectations par machines et avoir le reste des infos de la machine que je puisse modifier sans pour autant enregistrer chaque changement.

La solution que j'ai trouvé pour l'instant est d'enregistrer la machine et ces caratcéristiques pour cela j'ai verrouillé les cellules affectations et ensuite avec un autre bouton je rapelle la machine pour y remplir l'affectation que j'enregistre ensuite dans la feuille affectation et machine.

La solution que j'ai trouvé pour l'instant est d'enregistrer la machine et ces caratcéristiques pour cela j'ai verrouillé les cellules affectations et ensuite avec un autre bouton je rapelle la machine pour y remplir l'affectation que j'enregistre ensuite dans la feuille affectation et machine.

Oui je pense qu'avoir un bouton pour ajouter une nouvelle machine & 1 bouton pour modifier une machine existante est la bonne solution

comme tu as le fichier en allant dans le formulaire intervention si tu clique sur modifier il y a un userform qui apparait saurait tu comment on lui associe une action stp ?

Tu veux faire quoi exactement avec ce formulaire ?

J aurais voulu qu'en rentrant le numéro de l'intervention cela m'affiche les données du numéro appelé pour que je puisse les modifier ou tout simplement le supprimer

et les numéros d'interventions ils se trouvent ou ?

Rechercher des sujets similaires à "deux variables fonction match possible"