Microsoft 365 Comment copier 2 colonnes d'une ligne en fonction d'un mot dans une autre feuille

lilicorail46

XLDnaute Nouveau
Bonjour à tous,

Je créée cette discussion car j'ai vu que je n'étais pas seule dans ce cas là, mais même en regardant les réponses apportées : je ne comprends rien ... Je crois que je n'ai même pas atteint le niveau "débutant" ou alors le niveau "débutant enfant".

Voilà ce que je voudrais réaliser :

Dans mon classeur Excel, je souhaite copier les colonnes B et C de la feuille "Grille audit" vers les colonnes B et C de la feuille "Plan d'action" seulement quand le résultat en colonne C de la feuille "Grille audit" est "M" ou "NS".

Il faut savoir que les colonnes C, D et E représentent des dates de passages. C : 1er passage; D : 2ème passage et E : 3ème passage.
Quand je devrais saisir la colonne D pour le 2ème passage, il faudrait que ce soit cette colonne qui apparaissent sur ma feuille "Plan d'action" mais plus la C même si celle-ci sera déjà remplie avec les notations du 1er passage.

Je sais pas si je suis assez explicites dans mes explications. Je me débrouille sur Excel comme je peux mais je n'ai jamais fait de macro.

Je joint en copie mon fichier Excel afin que cela soit plus compréhensible pour vous.

J'ai vraiment besoin d'aide car là je suis dans une impasse.

Merci d'avance pour vos retours.
 

Pièces jointes

  • TEST TRAME Audit VIERGE - Cuisine Centrale.xlsx
    51.6 KB · Affichages: 9

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Lilicorail,
D'après ce que j'ai compris, votre solution ne me semble pas correcte. Je m'explique :
Imaginons l'item 1.1.1 avec NS en A1, on le mémorise dans Plan d'action.
S'ensuivra un écart constaté puis une action proposée ( d'ailleurs à laquelle devrait suivre un suivi de l'action ainsi qu'une date )
Puis ensuite on trouve pour le même item NS en A2, vous demandez donc de remplacer dans Plan d'action cet item par le nouveau. Dans ce cas il faut effacer l'écart et l'action qui n'ont plus rien à voir. Donc vous perdez toute traçabilité. Ce qui est ballot pour un audit.
La solution adoptée pour tout bilan d'audit ( tout du moins, tous ceux que je connais ) est d'ajouter une colonne Statut ( En cours, Clos ) dans le plan d'action et d'enregistrer à la suite tout nouveau item.
De cette façon vous tracez l'ensemble des actions effectués sur l'item. Un filtrage sur Statut vous permet d'afficher que les actions En cours.
Par ex :
1649491868716.png

Mais cela ne correspond plus à la requête initiale.
Votre avis ?
 

lilicorail46

XLDnaute Nouveau
Bonjour Sylvanu,

Et merci pour votre retour.

Je me suis peut être pas bien expliquée.
Le plan d’action ne concerne que l’audit venant d’être réalisé.
J’ai besoin que les lignes avec un résultat M ou NS apparaissent à la suite sur le plan d’action. Étant prestataire extérieur, seules les colonnes A, B, C et D nous concernent. La colonne E est remplie par le responsable du site.
Le document est imprimé et conservé sur le site audité. La haute direction doit y avoir accès sur site.
Nous contrôlons ce document lors du prochain audit où un nouveau plan d’action est créé.
Du coup, je n’ai pas besoin d’une colonne statut.
Merci pour votre aide.
Lilicorail



Bonjour Lilicorail,
D'après ce que j'ai compris, votre solution ne me semble pas correcte. Je m'explique :
Imaginons l'item 1.1.1 avec NS en A1, on le mémorise dans Plan d'action.
S'ensuivra un écart constaté puis une action proposée ( d'ailleurs à laquelle devrait suivre un suivi de l'action ainsi qu'une date )
Puis ensuite on trouve pour le même item NS en A2, vous demandez donc de remplacer dans Plan d'action cet item par le nouveau. Dans ce cas il faut effacer l'écart et l'action qui n'ont plus rien à voir. Donc vous perdez toute traçabilité. Ce qui est ballot pour un audit.
La solution adoptée pour tout bilan d'audit ( tout du moins, tous ceux que je connais ) est d'ajouter une colonne Statut ( En cours, Clos ) dans le plan d'action et d'enregistrer à la suite tout nouveau item.
De cette façon vous tracez l'ensemble des actions effectués sur l'item. Un filtrage sur Statut vous permet d'afficher que les actions En cours.
Par ex :
Regarde la pièce jointe 1136343
Mais cela ne correspond plus à la requête initiale.
Votre avis ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Un essai en PJ avec dans la feuille Grille audit la macro événementielle suivante :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("C1:E200")) Is Nothing Then
        On Error GoTo Fin:
        Application.ScreenUpdating = False
        Dim N%
        If Cells(Target.Row, "B") = "" Then Exit Sub
        If Target <> "M" And Target <> "NS" Then Exit Sub
        With Sheets("Plan d'action")
            N = .[Tableau2].Rows.Count
            If N > 1 Then .[Tableau2].ListObject.ListRows.Add
            .[Tableau2[N° item]].Item(N) = Cells(Target.Row, "A")
            .[Tableau2[Points contrôlés]].Item(N) = Cells(Target.Row, "B")
        End With
    End If
Fin:
Application.ScreenUpdating = True
End Sub
Dès qu'on détecte un M ou un NS en colonnes CDE alors on enregistre dans le plan d'action le N° item et les Points contrôlés.
 

Pièces jointes

  • TEST TRAME Audit VIERGE - Cuisine Centrale (1).xlsm
    59.2 KB · Affichages: 4

lilicorail46

XLDnaute Nouveau
Bonjour,
Un essai en PJ avec dans la feuille Grille audit la macro événementielle suivante :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("C1:E200")) Is Nothing Then
        On Error GoTo Fin:
        Application.ScreenUpdating = False
        Dim N%
        If Cells(Target.Row, "B") = "" Then Exit Sub
        If Target <> "M" And Target <> "NS" Then Exit Sub
        With Sheets("Plan d'action")
            N = .[Tableau2].Rows.Count
            If N > 1 Then .[Tableau2].ListObject.ListRows.Add
            .[Tableau2[N° item]].Item(N) = Cells(Target.Row, "A")
            .[Tableau2[Points contrôlés]].Item(N) = Cells(Target.Row, "B")
        End With
    End If
Fin:
Application.ScreenUpdating = True
End Sub
Dès qu'on détecte un M ou un NS en colonnes CDE alors on enregistre dans le plan d'action le N° item et les Points contrôlés.
Super merci beaucoup. Je teste ça rapidement. Car j’ai fait un essai macro vendredi, mais ça n’a pas fonctionné.
 

lilicorail46

XLDnaute Nouveau
Bonjour,
Un essai en PJ avec dans la feuille Grille audit la macro événementielle suivante :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("C1:E200")) Is Nothing Then
        On Error GoTo Fin:
        Application.ScreenUpdating = False
        Dim N%
        If Cells(Target.Row, "B") = "" Then Exit Sub
        If Target <> "M" And Target <> "NS" Then Exit Sub
        With Sheets("Plan d'action")
            N = .[Tableau2].Rows.Count
            If N > 1 Then .[Tableau2].ListObject.ListRows.Add
            .[Tableau2[N° item]].Item(N) = Cells(Target.Row, "A")
            .[Tableau2[Points contrôlés]].Item(N) = Cells(Target.Row, "B")
        End With
    End If
Fin:
Application.ScreenUpdating = True
End Sub
Dès qu'on détecte un M ou un NS en colonnes CDE alors on enregistre dans le plan d'action le N° item et les Points contrôlés.
Re Sylvanu,

Mille mercis ! car sans vous je serais encore en train de regarder des tutos persuadée d'avoir trouvé la macro pour ensuite déchanter car ça ne fonctionne pas ...
Au début ça copiait bien la ligne, mais dès que j'ajoutais un item M ou NS ça écrasait le premier.
Du coup j'ai ajouté +1 à : N = .[Tableau2].Rows.Count + 1 (vu sur un tuto Youtube de macro😂) .
Et ça a fonctionné.
Ces visionnages m'auront au moins aider à faire quelque chose.

Lilicorail46
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Lilicorail,
A l'origine le code était plus simple mais laissé la première ligne vide. D'où la modif sauvage ... non testée. Mea culpa.
Par contre votre modif laisse aussi la première ligne vide. Pour résoudre le problème (après l'avoir testée :))
VB:
        With Sheets("Plan d'action")
            N = .[Tableau2].Rows.Count   ' N° ligne d'écriture
            If N >= 1 And .[Tableau2[N° item]].Item(N) <> "" Then
                .[Tableau2].ListObject.ListRows.Add
                N = N + 1
            End If
            .[Tableau2[N° item]].Item(N) = Cells(Target.Row, "A")
            .[Tableau2[Points contrôlés]].Item(N) = Cells(Target.Row, "B")
        End With
Voir PJ.
 

Pièces jointes

  • TEST TRAME Audit VIERGE - Cuisine Centrale (2).xlsm
    59.3 KB · Affichages: 1

lilicorail46

XLDnaute Nouveau
Bonjour Lilicorail,
A l'origine le code était plus simple mais laissé la première ligne vide. D'où la modif sauvage ... non testée. Mea culpa.
Par contre votre modif laisse aussi la première ligne vide. Pour résoudre le problème (après l'avoir testée :))
VB:
        With Sheets("Plan d'action")
            N = .[Tableau2].Rows.Count   ' N° ligne d'écriture
            If N >= 1 And .[Tableau2[N° item]].Item(N) <> "" Then
                .[Tableau2].ListObject.ListRows.Add
                N = N + 1
            End If
            .[Tableau2[N° item]].Item(N) = Cells(Target.Row, "A")
            .[Tableau2[Points contrôlés]].Item(N) = Cells(Target.Row, "B")
        End With
Voir PJ.
SUPER ! merci beaucoup pour votre aide.

Lilicorail46
 

lilicorail46

XLDnaute Nouveau
Bonjour Lilicorail,
A l'origine le code était plus simple mais laissé la première ligne vide. D'où la modif sauvage ... non testée. Mea culpa.
Par contre votre modif laisse aussi la première ligne vide. Pour résoudre le problème (après l'avoir testée :))
VB:
        With Sheets("Plan d'action")
            N = .[Tableau2].Rows.Count   ' N° ligne d'écriture
            If N >= 1 And .[Tableau2[N° item]].Item(N) <> "" Then
                .[Tableau2].ListObject.ListRows.Add
                N = N + 1
            End If
            .[Tableau2[N° item]].Item(N) = Cells(Target.Row, "A")
            .[Tableau2[Points contrôlés]].Item(N) = Cells(Target.Row, "B")
        End With
Voir PJ.
Re,

Alors j'ai essayé de faire une nouvelle manip, mais ça n'a pas fonctionné.
J'ai créé une nouvelle feuille "Non évalué" sur le même principe que celle du "plan d'action". J'ai copié la macro en modifiant le nom de la feuille mais ça marche pas. Je ne dois pas faire la bonne manipulation quand je créé la macro je pense. J'ai même essayé à la suite de celle que vous m'avez fait mais ça ne fonctionne pas.
Savez vous d'où peux venir le problème?

Lilicorail46
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Il suffit de faire suivre 2 IF : Si M ou NS puis Si NE :
VB:
If Target = "M" Or Target = "NS" Then
    With Sheets("Plan d'action")
        ' CODE SI M OU NS
    End With
ElseIf Target = "NE" Then
    With Sheets("Non évalué")
        ' CODE SI NE
    End With
End If
 

Pièces jointes

  • NEW TEST TRAME Audit VIERGE - Cuisine Centrale (3).xlsm
    60.1 KB · Affichages: 3

Discussions similaires

Réponses
22
Affichages
691