Tableau Variable - Matrice à travailler

Fermé
alexnc Messages postés 1 Date d'inscription mercredi 21 mars 2018 Statut Membre Dernière intervention 21 mars 2018 - 21 mars 2018 à 23:30
Bonjour à tous,

Mon objectif était de copier certaines colonnes (sélectionnées + règles qui suppriment des lignes (nombre variable de lignes)) de ma sheet 1 (27 colonnes en tout) et de les coller dans la sheet 2 (10 colonnes sélectionnées): Le code est disponible plus bas.

J'essaye maintenant de faire 2 choses:
1) j'aimerais que le travail fait sur les spreadsheets (1 et 2) se fasse au sein de la matrice pour gagner du temps d'execution. Auriez-vous une idée? A noter que le travail sur la spreadsheet 1 se fait sur la spreadsheet 1 parce que la colonne concernée dans la condition du IF n'existe plus dans la matrice qui sera collée dans la spreadsheet 2.
2) Les valeurs d'une colonne (la deuxième en partant de la gauche soit la n°5 de sheet 1) sont associées à des codes. Toutes les valeurs n'ont pas forcément un code associé. Celles qui n'en ont pas => suppression de la ligne. Je sèche un peu. J'ai pensé à une espèce de VLOOKUP qui si le résultat est trouvé, ok on remplace, si pas trouvé, on supprime la ligne en question.

Si quelqu'un pouvait m'aider sur les 2 points en particulier le 2), ce serait magique!!!!!

Un grand merci!!!

CODE:

Sub Tableau()

'''''''''''' Travail sur la spreadsheet 1
Sheets("Sheet1").Select
i = 1
Do While Not (IsEmpty(ActiveSheet.Cells(i, 19)))
If Cells(i, 19).Value = "DELETED" Then
Rows(i).Delete
i = i
Else
i = i + 1
End If
Loop

'enregistrement de la matrice dans la sheet 1
Dim a
With Sheets("Sheet1").Range("B1").CurrentRegion
a = Application.Index(.Value, Evaluate("row(1:" & _
.Rows.Count & ")"), Array(2, 5, 6, 8, 9, 11, 12, 13, 14, 15))
End With
'Restitution de la matrice dans la sheet 2
With Sheets("Sheet2").Range("B1").Resize(UBound(a, 1), UBound(a, 2))
.Value = a
End With

'''''''''''' Travail sur la spreadsheet 2

Sheets("Sheet2").Select
j = 1
Do While Not (IsEmpty(ActiveSheet.Cells(j, 5)))
If Cells(j, 3).Value = "MISSED" Or Cells(j, 2) = Cells(j, 5) Or Cells(j, 5).Value = "ONGOING" Then
Rows(j).Delete
j = j
Else
j = j + 1
End If
Loop

End Sub