Problème d'erreur de compilation

Pour le titre de la colonne A : ID

Et pour l'onglet actif, on le nomme juste "onglet actif".

Je l'ai nommé Onglet-Actif (on évite les espaces dans les noms, avec VBA c'est mieux)

Dans la feuille Onglet-Actif, vous avez des listes déroulantes en colonne G, I, K, ... qui vous informe de l'avancement. Je suppose que ces listes ne servent plus puisque une fois la ligne de test créée, les infos sont reportées dans la feuille IV, TC ou MP et c'est là que les choix se feront avec la liste déroulante. Exact ?
Bien entendu, lorsque vous choisirez une donnée dans la liste déroulante, elle sera automatiquement reportée dans la feuille Onglet-Actif,

Donc déjà dans votre fichier faites ceci :
1. Onglet actif :
- rajoutez la colonne A pour l'ID. J'ai mis la formule suivante en A5 --> = Ligne()-4. Vous pouvez recopier vers le bas
- supprimez toutes les listes de validation entre les colonnes G à AC

2. Onglet IV, TC et MP :
- rajoutez la colonne A pour l'ID
- laissez les listes de validation en place

dites moi si ok pour vous

Bonjour Dan,

Dans la feuille Onglet-Actif, vous avez des listes déroulantes en colonne G, I, K, ... qui vous informe de l'avancement. Je suppose que ces listes ne servent plus puisque une fois la ligne de test créée, les infos sont reportées dans la feuille IV, TC ou MP et c'est là que les choix se feront avec la liste déroulante. Exact ?

oui, c'est bien ça, les réponses viendront des feuilles IV, TC et MP.

Je viens d'appliquer ce que vous m'aviez dis

Ok.

Lorsque vous allez dans l'éditeur VBA, est-ce que vous voyez l'objet Thisworkbook ?

J'en suis pas sûr mais je vais répondre que je le vois (je regarde à quoi cela ressemble sur Internet).

Je vous explique :

1. Sur le clavier, appuyez sur les touches ALT + F11 pour accéder à VBE (éventuellement vous devriez voir l'onglet developpeur dans le menu excel si vous avez activé de menu dans les option excel)
2. Appuyez sur CTRL + R, pour afficher la fenêtre VBA Project
3. Cliquez sur le + de l'objet VBAPROJECT
4. Cliquez sur Microsoft excel Objets

Vous devriez voir Thisworkbook.

D'accord, je l'ai bien trouvé du coup. Merci

OK. Alors faites ceci

1. Dans Thisworkbook, collez ce code

Option Explicit
Dim stpevt As Boolean
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim i As Byte, col As Byte
Dim lig As Integer, num As Integer
Dim jour As String

If Target.Count > 1 Then Exit Sub
If stpevt = True Then Exit Sub

If Sh.Name Like "*IV*" Then 'Or Sh.Name Like "*TC*" Or Sh.Name Like "*MP*" Then

    If Not Intersect(Target, Sheets(Sh.Name).Range("G:G, I:I, K:K, M:M")) Is Nothing Then
        col = Target.Column
        With Sheets(Sh.Name)
            num = .Range("A" & Target.Row)
            On Error Resume Next
            lig = WorksheetFunction.Match(num, Feuil9.Range("A:A"), 0)
            stpevt = True
            Feuil9.Cells(lig, col) = Target.Value
        End With
    End If
End If

If Sh.Name Like "*TC*" Then

    If Not Intersect(Target, Sheets(Sh.Name).Range("G:G, I:I, K:K, M:M, O:O")) Is Nothing Then
        col = Target.Column + 14
        With Sheets(Sh.Name)
            num = .Range("A" & Target.Row)
            On Error Resume Next
            lig = WorksheetFunction.Match(num, Feuil9.Range("A:A"), 0)
            stpevt = True
            Feuil9.Cells(lig, col) = Target.Value
        End With
    End If
End If

If Sh.Name Like "*MP*" Then
    If Not Intersect(Target, Sheets(Sh.Name).Range("G:G, I:I, K:K, O:O")) Is Nothing Then
        col = Target.Column - 8
        With Sheets(Sh.Name)
            num = .Range("A" & Target.Row)
            On Error Resume Next
            lig = WorksheetFunction.Match(num, Feuil9.Range("A:A"), 0)
            stpevt = True
            Feuil9.Cells(lig, col) = Target.Value
        End With
    End If
End If

If Sh.Name = "Onglet-Actif" Then

    If Not Intersect(Target, Sheets(Sh.Name).Range("F:F, H:H, J:J, L:L")) Is Nothing Then
        If Target <> vbNullString Then
            col = Target.Column
            num = Sheets(Sh.Name).Range("A" & Target.Row)
            For i = 1 To Sheets.Count
                If Sheets(i).Name Like "*IV*" Then
                    jour = Left(Sheets(i).Name, 6) & "IV"
                End If
            Next i
            stpevt = True
            Ajouter Target, col, num, jour
        End If
    End If

    If Not Intersect(Target, Feuil9.Range("N:N, P:P, R:R")) Is Nothing Then
        If Target <> vbNullString Then
            col = Target.Column - 8
            num = Sheets(Sh.Name).Range("A" & Target.Row)
            For i = 1 To Sheets.Count
                If Sheets(i).Name Like "*MP*" Then
                    jour = Left(Sheets(i).Name, 6) & "MP"
                End If
            Next i
            stpevt = True
            Ajouter Target, col, num, jour
        End If
    End If

    If Not Intersect(Target, Feuil9.Range("T:T, V:V, X:X, Z:Z, AB:AB")) Is Nothing Then
        If Target <> vbNullString Then
            col = Target.Column - 14
            num = Sheets(Sh.Name).Range("A" & Target.Row)
            For i = 1 To Sheets.Count
                If Sheets(i).Name Like "*TC*" Then
                    jour = Left(Sheets(i).Name, 6) & "TC"
                End If
            Next i
            stpevt = True
            Ajouter Target, col, num, jour
        End If
    End If
End If
stpevt = False
End Sub

2. Création module. Faites ceci :
- toujours dans l'éditeur VBA, allez dans le menu Insertion
- choisir "Module"
- collez le code dans la fenêtre

Sub Ajouter(Target As Range, col As Byte, num As Integer, jour As String)
'ajout des infos dans feuille IV, MP, TC
Dim lig As Integer

With Sheets(jour)
    On Error Resume Next
    lig = WorksheetFunction.Match(num, .Range("A:A"), 0)
    If lig = 0 Then lig = .Range("A" & Rows.Count).End(xlUp).Row + 1
    .Range("A" & lig) = Range("A" & Target.Row).Value
    .Range("B" & lig) = Range("B" & Target.Row).Value
    .Range("C" & lig) = Range("C" & Target.Row).Value
    .Range("D" & lig) = Range("D" & Target.Row).Value
    .Range("E" & lig) = Range("E" & Target.Row).Value
    .Cells(lig, col) = Cells(Target.Row, Target.Column).Value 'Range("E" & Target.Row).Value
End With
End Sub

3. Prérequis :
- vous devez d'abord rajouter la colonne A dans les feuilles Onglet, IV, TC et MP
- Dans la feuille Ongletactif vous devez avoir un numéro ID unique en regard de chaque ligne complétée. Comme je vous avait dit précédemment vous pouvez par exemple ajoutez la formule = ligne() en A5 et recopier vers le bas. Le principal est de toujours avoir un numéro.

4. Utilisation :
- Dans l'onglet actif,
---- Complétez les colonnes B, C, D, E.
---- Ajoutez la référence Batchnumber et la ligne sera créée à la dernière ligne des feuilles MP, IV ou TC
Si la ligne existe déjà vous pouvez mettre à jour en double cliquant dans la cellule du numéro de Batch ou en changeant le numéro puis Entrée sur le clavier.

- dans les onglet MP, TC et IV
---- lorsque vous ferez un choix dans la liste déroulante à droite de la référence Batch, le choix de la liste sera reporté en feuille Ongletactif.
(exemple si vous avez un numéro de batch en F6, changez la ref de suivi en G6 et allez voir la ligne dont référence est identique en colonne A de l'onglet actif)

Cordialement

Je viens de suivre toutes vos consignes et le résultat est incroyable. Merci beaucoup pour votre temps

J'ai une petite erreur que j'ai dû mal à comprendre :

image image

Comme on peut le voir, les résultats de l'examen ne se sont pas reporté dans l'onglet actif et j'ai vu que c'est ce bout de code que je n'arrive pas à comprendre :

image

1. Je parie que vous avez mis un ID équivalent dans les feuilles IV, TC et MP à celui de l'onglet actif. Si oui, ce n'est pas ce que je vous ai écrit au point 3 de mon post précédent.
Prévoir Colonne A pour l'ID dans chacun des onglets mais votre numéro ID seulement dans la colonne A de l'onglet Actif

2. Je vous l'avais écrit dans un autre post. Les titres des entêtes en rouge sur votre première vue ne sont pas dans le même ordre de ceux de la deuxième vue
D'un coté vous avez AC gras IR et Silicone et de l'autre Silicone, AC Gras et IR

Oui, en effet, j'avais mis les ID dans les autres onglets, je vous avais mal compris.

Merci encore.

J'ai fait les modification et j'ai eu le même problème encore :

image

Toujours la même ligne de code et cela se produit quand je met "état du test" dans la liste déroulante (c'est uniquement liés à l'onglet "MP").

c'est la ligne de code en jaune qu'il me faut voir. Le message ne me sert à rien

Toujours la même ligne de code et cela se produit quand je met "état du test" dans la liste déroulante (c'est uniquement liés à l'onglet "MP").

Je ne vois pas "etat de test" dans la liste déroulante de votre fichier.

L'état du test c'est par exemple : >>>; X; RP; ect... .

Voici l'erreur :

image

re

Dans la ligne qui bugue, changez le signe - en --> +

J'ai plus ce type de problème, mais j'en ai un nouveau, pour la feuille IV, l'onglet actif n'a pas transmis l'un des test (je teste le fichier pour voir ce qui est faisable et les mettre des règles).

image

Il manque la ligne 7.

image

J'ai plus ce type de problème, mais j'en ai un nouveau, pour la feuille IV, l'onglet actif n'a pas transmis l'un des test (je teste le fichier pour voir ce qui est faisable et les mettre des règles).

Je n'ai pas le souci.
refaites un test en allant dans la feuille Onglet actif, puis double clik dans la cellule de la ligne 7 (colonne L) et appuyez sur la touche ENTREE de votre clavier

Et bien, j'ai pas trouvé de problème pour l'instant, le dernier rencontré a disparu en soi donc c'est bon.

Merci beaucoup pour le temps que vous m'aviez accordé et pour le code aussi.

Rechercher des sujets similaires à "probleme erreur compilation"