Copier/Coller colonnes avec cellule vide

Bonjour tout le monde

J’essaye de copier les données de certaines colonnes d’un fichier Excel pour les coller dans un autre fichier Excel. Pour ça j’ai utilisé ce code :

'Set the header for every used column of the matrix
With MATRIX_WS
    Set MATRIX_LABEL_H = .Range("A6").EntireRow.Find("Supplier label")
    Set MATRIX_DTC_H = .Range("A6").EntireRow.Find("Data Trouble Code (DTC)")
    Set MATRIX_ID_H = .Range("A6").EntireRow.Find("Requirement / Event_ID")
    Set MATRIX_QUALIF_H = .Range("A6").EntireRow.Find("Qualification time label")
    Set MATRIX_TIME_H = .Range("A6").EntireRow.Find("Healing time label")
    Set MATRIX_TRESHOLD_H = .Range("A6").EntireRow.Find("Healing threshold label")
    Set MATRIX_PYSIC_H = .Range("A6").EntireRow.Find("Physical detection threshold label")
    Set MATRIX_STATE_H = .Range("A6").EntireRow.Find("Fault shield calibration / Actiavtion Label")
    nbData = MATRIX_ID_H.End(xlDown).Row - MATRIX_LABEL_H.Row
End With

'Copy relevant date from Matrix file into Diff file
MATRIX_ID_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("EventID").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_LABEL_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("MatrixSupplierLabel").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_STATE_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("MatrixActivation").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_DTC_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("MatrixDTCCode").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_QUALIF_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("MatrixQualificationTime").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_TIME_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("MatrixHealingTime").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_TRESHOLD_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("MatrixHealingThreshold").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_PYSIC_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("MatrixPhysicalThreshold").Offset(1, 0).PasteSpecial Paste:=xlPasteValues

Mais le souci c’est que dans le fichier ou je copie les données de certaines colonnes il y’a des cellules vides donc il ne copie/colle pas tout malgré les cellules vides. Le programme s’arrête et ne copie/colle plus rien :

Le fichier ou je copie certaines colonnes avec leurs données


Et le fichier ou je colle les données :

Et comme vous pouvez le voir au lieu d’avoir des centaines de lignes j’en ai seulement 2 du aux cellules vides du fichier initial.
J’ai testé en utilisant ce code pour faire en sorte de tout copier et coller malgré les cellules vides :

'Loop through each row in the matrix and copy relevant data to the diff worksheet
For v = 2 To nbData + 1
    'Copy Event ID
    If Not IsEmpty(MATRIX_ID_H.Cells(v, 1)) Then
        DIFF_WS.Range("EventID").Cells(DIFF_WS.Range("EventID").Rows.CountLarge + 1, 1) = MATRIX_ID_H.Cells(v, 1)
    End If

    'Copy Supplier Label
    If Not IsEmpty(MATRIX_LABEL_H.Cells(v, 1)) Then
        DIFF_WS.Range("MatrixSupplierLabel").Cells(DIFF_WS.Range("MatrixSupplierLabel").Rows.CountLarge + 1, 1) = MATRIX_LABEL_H.Cells(v, 1)
    End If

    'Copy Activation Label
    If Not IsEmpty(MATRIX_STATE_H.Cells(v, 1)) Then
        DIFF_WS.Range("MatrixActivation").Cells(DIFF_WS.Range("MatrixActivation").Rows.CountLarge + 1, 1) = MATRIX_STATE_H.Cells(v, 1)
    End If

    'Copy DTC Code
    If Not IsEmpty(MATRIX_DTC_H.Cells(v, 1)) Then
        DIFF_WS.Range("MatrixDTCCode").Cells(DIFF_WS.Range("MatrixDTCCode").Rows.CountLarge + 1, 1) = MATRIX_DTC_H.Cells(v, 1)
    End If

    'Copy Qualification Time
    If Not IsEmpty(MATRIX_QUALIF_H.Cells(v, 1)) Then
        DIFF_WS.Range("MatrixQualificationTime").Cells(DIFF_WS.Range("MatrixQualificationTime").Rows.CountLarge + 1, 1) = MATRIX_QUALIF_H.Cells(v, 1)
    End If

    'Copy Healing Time
    If Not IsEmpty(MATRIX_TIME_H.Cells(v, 1)) Then
        DIFF_WS.Range("MatrixHealingTime").Cells(DIFF_WS.Range("MatrixHealingTime").Rows.CountLarge + 1, 1) = MATRIX_TIME_H.Cells(v, 1)
    End If

    'Copy Healing Threshold
    If Not IsEmpty(MATRIX_TRESHOLD_H.Cells(v, 1)) Then
        DIFF_WS.Range("MatrixHealingThreshold").Cells(DIFF_WS.Range("MatrixHealingThreshold").Rows.CountLarge + 1, 1) = MATRIX_TRESHOLD_H.Cells(v, 1)
    End If

    'Copy Physical Detection Threshold
    If Not IsEmpty(MATRIX_PYSIC_H.Cells(v, 1)) Then
        DIFF_WS.Range("MatrixPhysicalThreshold").Cells(DIFF_WS.Range("MatrixPhysicalThreshold").Rows.CountLarge + 1, 1) = MATRIX_PYSIC_H.Cells(v, 1)
    End If
Next v

Mais ça ne fonctionne pas.
Merci par avance !

Update :
Après re avoir testé avec ce code :

'Set the header for every used column of the matrix
With MATRIX_WS
    Set MATRIX_LABEL_H = .Range("A6").EntireRow.Find("Supplier label")
    Set MATRIX_DTC_H = .Range("A6").EntireRow.Find("Data Trouble Code (DTC)")
    Set MATRIX_ID_H = .Range("A6").EntireRow.Find("Requirement / Event_ID")
    Set MATRIX_QUALIF_H = .Range("A6").EntireRow.Find("Qualification time label")
    Set MATRIX_TIME_H = .Range("A6").EntireRow.Find("Healing time label")
    Set MATRIX_TRESHOLD_H = .Range("A6").EntireRow.Find("Healing threshold label")
    Set MATRIX_PYSIC_H = .Range("A6").EntireRow.Find("Physical detection threshold label")
    Set MATRIX_STATE_H = .Range("A6").EntireRow.Find("Fault shield calibration / Actiavtion Label")
    nbData = MATRIX_ID_H.End(xlDown).Row - MATRIX_LABEL_H.Row
End With

'Copy relevant date from Matrix file into Diff file
MATRIX_ID_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("EventID").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_LABEL_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("MatrixSupplierLabel").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_STATE_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("MatrixActivation").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_DTC_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("MatrixDTCCode").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_QUALIF_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("MatrixQualificationTime").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_TIME_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("MatrixHealingTime").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_TRESHOLD_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("MatrixHealingThreshold").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_PYSIC_H.Offset(1, 0).Resize(nbData, 1).Copy
DIFF_WS.Range("MatrixPhysicalThreshold").Offset(1, 0).PasteSpecial Paste:=xlPasteValues


On peut voir qu’il y’a plus de données qui ont été colle mais toujours insuffisant car il manque beaucoup de données, notamment les ID qui sont pas collées etc.

Bonjour,
Savez-vous qu’on ne peut pas faire un test ?
Avoir un fichier d’exemple et l’objectif nous aidera bien à vous aider.
Will-Fread

Les fichiers sont en pièces jointes, par contre je ne peux pas mettre le fichier XML vu que le fichier est trop volumineux (mais il n’est pas utile pour ce problème car ce que je souhaite faire se passe avant l’ouverture du fichier XML).

DiagMatrix_check_test.xlsm (31,1 Ko)
Matrice_diag_test.xls (962 Ko)

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.