Importation élaborée d'un .csv
Bonjour, je cherche à gérer l'importation d’un fichier csv généré par une feuille Excel
Je voudrais pouvoir importer le csv en le choisissant, et le traiter sauf si son nom commence par "exp37", puis importer le csv de manière élaborée.
J'ai posé la façon dont je vois le déroulement de la macro de manière algorithmique :
Si le nom du csv ne commence pas par exp37…
Pour chaque ligne du csv
Pour chaque ligne i du pdc de la ligne 15 à la dernière
Si PersonneCSV <> PersonneLigne
Range (« A »&i+1).select //pour pouvoir utiliser la macro d’insertion au besoin
SinonSi ActCSV <> ActLigne
Si ActLigne = « CONGES »
Macro InserLigne +
Insérer a la ligne de la cellule actuelle la ligne du CSV
Sinon Range (« A »&i+1).select
FinSi
Si ActLigne = « »
Insérer a la ligne de la cellule actuelle la ligne du CSV
Sinon Range (« A »&i+1).select
FinSi
Sinon RemplacerLigne PDC par ligne CSV
FinSi
FinSi
FinPour
FinPour
FinSiEn gros j'avais pensé à une sorte de curseur afin de réutiliser le composant déjà existant en descendant au fur et à mesure tant que je n'ai pas croisé dans un premier temps,la personne, puis ensuite, sois l'activité, sois rien, sois "CONGES" puis traiter de manière différente en fonction...
Merci par avance pour toute aide apportée
Si le nom du csv ne commence pas par exp37…
Range (« A15 »).select
Pour chaque ligne du csv
Pour chaque ligne i du pdc de la ligne 15 à la dernière
Si PersonneCSV = PersonneLigne
Si ActCSV <> ActLigne
Si ActLigne = « CONGES »
Macro InserLigne +
Insérer a la ligne de la cellule actuelle la ligne du CSV
FinSi
Si ActLigne = « »
Insérer a la ligne de la cellule actuelle la ligne du CSV
FinSi
Sinon
RemplacerLigne PDC par ligne CSV
FinSi
FinSi
Range (« A »&i+1).select //pour pouvoir utiliser la macro d’insertion au besoin
FinPour
FinPour
FinSiJe viens de voir une erreur sur mon algo, voici le bon, je pense
Up ! Excusez moi mais c'est plutôt important pour moi et je galère comme pas possible
Wooah, merci de t’intéresser à mon cas ! J'avais commencé de la sorte en tâtonnant quelque peu, je regarde ton code dans l'aprem, merci encore !
Option Explicit
Type Colonne
Ressource As Long
Activite As Long
Janvier As Long
End Type
Sub Tst()
Dim Fichier As Variant
Dim result As Boolean
ChDir ThisWorkbook.Path
Fichier = Application.GetOpenFilename("Text Files (*.csv), *.csv")
result = Fichier Like "*exp37*"
If Fichier <> False Then
If result = False Then
Import Fichier
Else: MsgBox ("Veuillez choisir un fichier qui n'est pas du PDC37")
End If
End If
End Sub
Sub Import(ByVal NomFichier As String)
Dim Col As Colonne
Dim oFSO As Variant, Fich As Variant, Ts As Variant
Dim nbLigCSV As Integer
' Chargement des colonnes
Col.Ressource = 1
Col.Activite = 3
Col.Janvier = 5
' Séparateur Point Virgule
Separateur = ";"
' Donne le nombre de lignes du fichier .csv
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set Fich = oFSO.OpenTextFile(NomFichier, 1)
Ts = Fich.ReadAll
nbLigCSV = Fich.Line - 1
' Feuille à traiter
Set Sh = ActiveWorkbook.Worksheets("AFFECTATIONS")
LigFin = Sh.UsedRange.Rows.Count
'Pour chaque ligne du csv
'Pour chaque ligne i du pdc de la ligne 15 à la dernière
'Si PersonneCSV = PersonneLigne
'Si ActCSV <> ActLigne
'Si ActLigne = « CONGES »
' Macro InserLigne +
'Insérer a la ligne de la cellule actuelle la ligne du CSV
'FinSi
'Si ActLigne = « »
'Insérer a la ligne de la cellule actuelle la ligne du CSV
'FinSi
'Sinon
'RemplacerLigne PDC par ligne CSV
'FinSi
'FinSi
'Range (« A »&i+1).select //pour pouvoir utiliser la macro d’insertion au besoin
'FinPour
'FinPour
End Sub