Implémenter partiellement tableau à partir d'un autre

]Bonjour.

Je cherche une réponse à mon problème depuis un bon moment et j'ai décidé de sauter le pas et de m'inscrire sur le forum

Je ne suis pas une experte dans Excel mais je me débrouille un peu...

J'ai une base de donnée que je remplis au fur et à mesure des dysfonctionnements (Non conformité NC) que nous rencontrons. Certaines NC nécessitent une ACP (action corrective et préventive).

Pour pouvoir gérer le suivi des ACP, j'aurai besoin que ma feuille de suivi s'implémente au fur et à mesure du remplissage de ma feuille de NC... mais je n'ai pas besoin de toutes les colonnes !

Colonnes à implémenter : N° ordre NC, date, site, secteur, indicateur, type de NC.

Est-ce que c'est faisable dans le style de base ci-jointe ?

Si oui, quelqu'un pourrait-il m'expliquer comment je dois faire ?

Je vous remercie pour votre aide.

Je vous joins le fichier si besoin

10suivi-acp.zip (20.16 Ko)

bonsoir,

Oui. Mais le report automatique d'une feuille sur l'autre nécessitera l'usage de macros.

Préciser si ton Excel est configuré pour en recevoir et si tu as déjà l'onglet développeur.

Il faut indiquer précisément (en colorant les en-têtes différemment) quelles sont les colonnes que tu désires voire reporter sur la deuxième feuille.

Dans le fichier ci-joint, il est supposé que ta config admet les macros.

Les lignes (colonnes jaunes) sont transférées dans l'onglet ACP quand on clic "OUI" colonne K

A+

26suivi-acp-vg.xlsm (37.51 Ko)

Merci pour votre réponse.

Lorsque je crée une ligne, elle s'implémente dans la seconde feuille mais si j'en crée une deuxième, elle écrase la première ???

7suivi-acp.zip (20.34 Ko)

revoir ma dernière réponse

Merci Galopin, c'est super !

Pourriez-vous m'expliquer comment vous avez fait ?

La macro modifiée pour ne pas recopier le N° de dossier.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i, iR&, iC%, a, WsC As Worksheet
iR = Target.Row
iC = Target.Column
a = Range(Cells(iR, 4), Cells(iR, 7))
If Target.Count = 1 Then
   If iR > 1 And iC = 10 And Target.Value = "OUI" Then
      Set WsC = Worksheets("Index_ACP")
      With WsC
         i = .[A1].End(xlDown)(2).Row
         .Cells(i, 2) = Cells(iR, 1)
         .Cells(i, 3) = CDate(Cells(iR, 2).Value2)
         .Cells(i, 5) = a(1, 1)
         .Cells(i, 6) = a(1, 2)
         .Cells(i, 7) = a(1, 3)
         .Cells(i, 8) = a(1, 4)
      End With
   End If
End If
End Sub

Merci Galopin c'est super.

Lorsque je crée une ligne, ça s'implémente nickel mais lorsque il y a une deuxième ligne, elle écrase la première

Merci bcp

Remplacer :

i = .[A1].End(xlDown)(2).Row 'par
i = .[B1].End(xlDown)(2).Row

Pour les explications ça ne va pas être simple, surtout si tu n'as jamais touché aux macros !

Tu me demandes d'expliquer 25 ans d'apprentissage et de pratique en 5 lignes, 5 pages ou je t'en fait une brochure ?

Pour voir et remplacer ou modifier la macro faire un clic droit sur l'onglet + Visualiser le code.

Pour des explications complémentaires je ne suis pas contre mais si tu n'as vraiment aucune idée de programmation, je préconise plutôt le téléphone... (Je donne volontiers mon N° en MP si nécessaire...)

A+

Merci bcp Galopin pour ton aide précieuse.

Je vais suivre des tutos pour les macros et je n'hésiterai pas à revenir vers toi si besoin !!

Bonne soirée.

Encore merci

Pas de soucis.

La macro commentée :

Private Sub Worksheet_Change(ByVal Target As Range)
'Target c'est la cellule modifiée
Dim i, iR&, iC%, a, WsC As Worksheet
iR = Target.Row      'on mémorise la ligne cliquée
iC = Target.Column   'on mémorise la ligne cliquée
'On enregistre les donnée des colonnes 3 à 7 dans un tableau virtuel (a)
a = Range(Cells(iR, 3), Cells(iR, 7))
'La macro ne fonctionne que si une seule cellule est modifiée
If Target.Count = 1 Then
   'et si cette cellule est bien danns la 10 ème colonne et si la valeur est OUI
   If iR > 1 And iC = 10 And Target.Value = "OUI" Then
      'On dit que la feuille cible (WsC) est "Index_ACP"
      Set WsC = Worksheets("Index_ACP")
      With WsC
         i = .[B1].End(xlDown)(2).Row  'i est la première ligne vide (colonne B
         .Cells(i, 2) = Cells(iR, 1)   'et on écrit les égalités
         .Cells(i, 3) = CDate(Cells(iR, 2).Value2) 'ici on utilise Value2 car c'est une date...
         .Cells(i, 5) = a(1, 1)        'ici on préfère lire le tableau virtuel
         .Cells(i, 6) = a(1, 2)        'mais on pourrait très bien utiliser les Cells...
         .Cells(i, 7) = a(1, 3)        'avec cells, sur cette ligne on mettrait = Cells(iR, 6)
         .Cells(i, 8) = a(1, 4)        'avec cells, ici on mettrait = Cells(iR, 7)
      End With
   End If
End If
End Sub
Rechercher des sujets similaires à "implementer partiellement tableau partir"