Transfert de données sous conditions

11destination.xlsx (23.40 Ko)
9source.xlsm (129.77 Ko)

Bonjour à tous,

J'ai un problème qui dépasse mes compétences sur un fichier contenant de nombreuses macro.

Je viens vous demander de l'aide et en connaitre la faisabilité car mon supérieur désire que je le réalise et là je sèche complet.

Je vous livre deux fichiers pour avoir une meilleure compréhension du problème :

Un fichier source .xlsm qui comporte sur le fichier réel de nombreux onglets mais dont je ne récupère que certaines données sur un onglet.

Un fichier destination qui est la structure exacte qui doit accueillir les données transférées.

En clair, je dois créer sur le fichier source un bouton sur l'onglet désiré qui lorsque je clique dessus, va faire les choses suivantes:

  • ouvrir le fichier destination vierge
  • Copier certaines donnée a compter de la ligne 15
  • Choix des donnée en fonction du niveau (croix dans colonne P ou Q uniquement)
  • Si Pou Q avec une croix alors copier les donnée de E et I et uniquement celles qui ont une croix en E ou I
  • Recopier les données copiées en dans les bonnes cases en fonction de critères a compter de la ligne 9
  • Recopier dans destination la donnée E écrite en noir dans des la colonne A
  • Recopier dans la destination la donnée E écrite en bleu dans la colonne B
  • Recopier dans la destination la donnée I dans la colonne D

J'ai essayé de vous montrer le résultat dans le fichier destination pour que cela soit plus simple a comprendre.

Pensez vous que cela soit réalisable avec du VBA et un bouton relié a une macro?

Pouvez vous m'aider car là je sèche complètement?

Merci pour votre aide

Bonjour,

En supposant que le fichier "Source" et le fichier "Destination" soient dans le même répertoire:

7source-1.xlsm (142.46 Ko)

Le code

Option Explicit

Sub Transfert()
    Dim w1 As Workbook, w2 As Workbook
    Dim f1 As Worksheet, f2 As Worksheet
    Dim i As Long, DerLig_w1 As Long, DerLig_w2 As Long, Deb As Long, Col As Long
    Dim Chemin As String
    Dim Texte1, Texte2, Texte3
    Dim X As Object

    Application.ScreenUpdating = False
    Set w1 = ThisWorkbook
    Chemin = ThisWorkbook.Path & "\"
    Workbooks.Open Filename:=Chemin & "destination.xlsx"
    Set w2 = ActiveWorkbook
    Set f2 = Sheets("Checklist Document")
    DerLig_w2 = f2.Range("A" & Rows.Count).End(xlUp).Row

    w1.Activate
    Set f1 = Sheets("2- Questionnaire")
    DerLig_w1 = f1.Range("E" & Rows.Count).End(xlUp).Row
    With f1.Range("P14:Q" & DerLig_w1)
        Set X = .Find("X")
        If Not X Is Nothing Then
            Deb = X.Row
            Col = X.Column
            Do
                If f1.Cells(X.Row, Col).MergeCells Then
                    Texte1 = f1.Cells(X.Row, "E")
                    Texte2 = f1.Cells(X.Row + 1, "E")
                    Texte3 = f1.Cells(X.Row, "I")
                    w2.Activate
                    Range(f2.Cells(DerLig_w2 + 1, "A"), f2.Cells(DerLig_w2 + 1, "D")).Value = Array(Texte1, Texte2, "", Texte3)
                    DerLig_w2 = DerLig_w2 + 1
                Else
                    Texte1 = f1.Cells(X.Row, "E")
                    Texte3 = f1.Cells(X.Row, "I")
                    w2.Activate
                    Range(f2.Cells(DerLig_w2 + 1, "A"), f2.Cells(DerLig_w2 + 1, "D")).Value = Array(Texte1, "", "", Texte3)
                    DerLig_w2 = DerLig_w2 + 1
                End If
                w1.Activate
                Set X = .FindNext(X)
            Loop While Not X Is Nothing And X.Row <> Deb
        End If
    End With
    w2.Activate
    f2.Range("B2:B" & DerLig_w2).Font.Color = RGB(0, 0, 255)
    w2.Close
    Set w1 = Nothing
    Set w2 = Nothing
    Set f1 = Nothing
    Set f2 = Nothing
    Set X = Nothing
End Sub

Cdlt

Bonjour,

Effectivement, c'est dans le meme répertoire.

Je vais faire la modification de code dans la journée et tester la solution.

Merci infiniment

Merci Merci Merci

cela marche parfaitement

J'ai juste oublié un détail

Il faut en même temps copier dans la feuille 1-Synthèse et Résultat copier la case AB17

et la coller dans le fichier destination en C1

Puis dans destination si un commentaire a été collé, il faut inscrire Non Conforme dans la colonne C

Ce serait formidable

2source.xlsm (135.96 Ko)

J'ai complété le VBA pour ma nouvelle question donc côté code tout fonctionne et c'est merveilleux.

Un grand merci pour la solution et surtout cette vision claire.

Merci a tous ceux qui ont regardé le message et essayé de trouver une solution

Rechercher des sujets similaires à "transfert donnees conditions"