Excel / Visual Basic / Création et transfert d'informations
Résolu/Fermé
SliDeeNz
Messages postés
223
Date d'inscription
lundi 28 septembre 2015
Statut
Membre
Dernière intervention
4 avril 2016
-
Modifié par SliDeeNz le 28/09/2015 à 12:50
SliDeeNz Messages postés 223 Date d'inscription lundi 28 septembre 2015 Statut Membre Dernière intervention 4 avril 2016 - 1 oct. 2015 à 16:54
SliDeeNz Messages postés 223 Date d'inscription lundi 28 septembre 2015 Statut Membre Dernière intervention 4 avril 2016 - 1 oct. 2015 à 16:54
A voir également:
- Excel / Visual Basic / Création et transfert d'informations
- Visual basic - Télécharger - Langages
- Word et excel gratuit - Guide
- Si et excel - Guide
- Liste déroulante excel - Guide
- Microsoft 365 basic - Accueil - Microsoft Office
4 réponses
f894009
Messages postés
17268
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 mars 2025
1 713
Modifié par f894009 le 29/09/2015 à 11:59
Modifié par f894009 le 29/09/2015 à 11:59
Bonjour,
Ensuite nous verrons pour la collecte des donnees
A+
'code a affecter a un bouton sur une feuille Sub Choix_Fichier_CSV() Dim CheminFichier As Variant Const Fichier As String = "Fichier CSV (*.csv), *.csv" Const Ext As String = "csv" 'Choisir le fichier source CheminFichier = Application.GetOpenFilename(Fichier) 'test pas de fichier selectionne If Right(SCheminFichier, 3) <> Ext Then MsgBox "Vous n'avez pas choisi de fichier csv !! Bye ..." Exit Sub Else 'importer le fichier choisi Import_Fichier_rapport (CheminFichier) End If End Sub 'code modife en partant d'un import donnees externes avec l'enregistreur de macro 'vous deverez adapter cette ligne '.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1) 'en fonction du nombre de colonnes du fichier csv. 'Le mieux serait de faire avec l'enregistreur de macro l'import de votre fichier Sub Import_Fichier_rapport(Fichier) 'nom de feuille a adapter Worksheets("Data_TXT").Activate Worksheets("Data_TXT").Cells.ClearContents With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Fichier, Destination:=Range("$A$1")) '.CommandType = 0 '.Name = "498 499 23°C yaw pitch" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 1252 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With End Sub
Ensuite nous verrons pour la collecte des donnees
A+
f894009
Messages postés
17268
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 mars 2025
1 713
30 sept. 2015 à 14:14
30 sept. 2015 à 14:14
Re,
fichier excel xls et fichier csv pour demo, les cellules copiees sont dans les colonnes texte en rouge, adaptez a votre besoin
https://www.cjoint.com/c/EIEmm6dyrqf
fichier excel xls et fichier csv pour demo, les cellules copiees sont dans les colonnes texte en rouge, adaptez a votre besoin
https://www.cjoint.com/c/EIEmm6dyrqf
SliDeeNz
Messages postés
223
Date d'inscription
lundi 28 septembre 2015
Statut
Membre
Dernière intervention
4 avril 2016
17
30 sept. 2015 à 15:18
30 sept. 2015 à 15:18
Re,
Jusque la tout va bien c'est niquel,
Une dernière petite question,
Si j'ai plusieurs lignes dans le fichier CSV, quelle partie du code je doit modifier pour que le tableau créé plus de ligne ?
Merci !
Jusque la tout va bien c'est niquel,
Une dernière petite question,
Si j'ai plusieurs lignes dans le fichier CSV, quelle partie du code je doit modifier pour que le tableau créé plus de ligne ?
Merci !
f894009
Messages postés
17268
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 mars 2025
1 713
>
SliDeeNz
Messages postés
223
Date d'inscription
lundi 28 septembre 2015
Statut
Membre
Dernière intervention
4 avril 2016
30 sept. 2015 à 15:25
30 sept. 2015 à 15:25
Re,
Vous avez ecrit ceci:
Ce fichier doit contenir les 4 informations utiles du fichier CSV
Vous ne precisez pas qu'il y a plusieurs lignes a balayer !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Expliquez plus precisement, pourtant simple, non ?
Vous avez ecrit ceci:
Ce fichier doit contenir les 4 informations utiles du fichier CSV
Vous ne precisez pas qu'il y a plusieurs lignes a balayer !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Expliquez plus precisement, pourtant simple, non ?
SliDeeNz
Messages postés
223
Date d'inscription
lundi 28 septembre 2015
Statut
Membre
Dernière intervention
4 avril 2016
17
30 sept. 2015 à 15:47
30 sept. 2015 à 15:47
Re,
Veuillez m'excuser,
Oui effectivement il peut y avoir plusieurs lignes à balayer en fonction du nombre d'utilisateurs qui soient modifie leur profil ou créé un profil.
Plus il y a de personnes qui modifie ou créés un profil, plus il y a de lignes à balayer sur le fichier CSV et donc plus il y aura de lignes sur le fichier Excel.
Veuillez m'excuser,
Oui effectivement il peut y avoir plusieurs lignes à balayer en fonction du nombre d'utilisateurs qui soient modifie leur profil ou créé un profil.
Plus il y a de personnes qui modifie ou créés un profil, plus il y a de lignes à balayer sur le fichier CSV et donc plus il y aura de lignes sur le fichier Excel.
f894009
Messages postés
17268
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 mars 2025
1 713
>
SliDeeNz
Messages postés
223
Date d'inscription
lundi 28 septembre 2015
Statut
Membre
Dernière intervention
4 avril 2016
Modifié par f894009 le 30/09/2015 à 15:53
Modifié par f894009 le 30/09/2015 à 15:53
Re,
code precedent Sub Traitement() a remplacer:
code precedent Sub Traitement() a remplacer:
Sub Traitement() With Worksheets("feuil1") 'raz cellules derlig = .Range("A" & Rows.Count).End(xlUp).Row .Range("E2,H2,I2,L2,O2,P2").ClearContents .Range("E2:E" & derlig).ClearContents .Range("H2:H" & derlig).ClearContents .Range("I2:I" & derlig).ClearContents .Range("L2:L" & derlig).ClearContents .Range("O2:O" & derlig).ClearContents .Range("P2:P" & derlig).ClearContents 'ecriture Infos derlig = Worksheets("Import_CSV").Range("A" & Rows.Count).End(xlUp).Row Worksheets("Import_CSV").Range("E2:E" & derlig).Copy .Range("E2:E" & derlig) Worksheets("Import_CSV").Range("H2:H" & derlig).Copy .Range("H2:H" & derlig) Worksheets("Import_CSV").Range("I2:I" & derlig).Copy .Range("I2:I" & derlig) Worksheets("Import_CSV").Range("L2:L" & derlig).Copy .Range("L2:L" & derlig) Worksheets("Import_CSV").Range("O2:O" & derlig).Copy .Range("O2:O" & derlig) Worksheets("Import_CSV").Range("P2:P" & derlig).Copy .Range("P2:P" & derlig) End With End Sub
SliDeeNz
Messages postés
223
Date d'inscription
lundi 28 septembre 2015
Statut
Membre
Dernière intervention
4 avril 2016
17
>
f894009
Messages postés
17268
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 mars 2025
30 sept. 2015 à 16:20
30 sept. 2015 à 16:20
Re,
Merci sa fonctionne,
Donc si j'ai bien compris actuellement on utilise quelques informations du fichier CSV et on les utilises au endroit défini dans le Excel.
Et ce que en balayant le fichier CSV on ne pourrait pas connaitre le nombre de ligne a ajouter dans le fichier Excel et donc générer automatiquement les lignes qui contiendrons toujours les mêmes valeurs (les valeurs par défaut qui ne changent pas lors du traitement du fichier CSV) ?
Merci sa fonctionne,
Donc si j'ai bien compris actuellement on utilise quelques informations du fichier CSV et on les utilises au endroit défini dans le Excel.
Et ce que en balayant le fichier CSV on ne pourrait pas connaitre le nombre de ligne a ajouter dans le fichier Excel et donc générer automatiquement les lignes qui contiendrons toujours les mêmes valeurs (les valeurs par défaut qui ne changent pas lors du traitement du fichier CSV) ?
f894009
Messages postés
17268
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 mars 2025
1 713
1 oct. 2015 à 14:12
1 oct. 2015 à 14:12
Re,
sub Traitement a remplacer. Je me repete, deux fois copie de colonne D normal ou pas et infos fixe J : 1,98001E+11-----> Z'etes sur
sub Traitement a remplacer. Je me repete, deux fois copie de colonne D normal ou pas et infos fixe J : 1,98001E+11-----> Z'etes sur
Sub Traitement() With Worksheets("feuil1") 'raz cellules derlig = .Range("A" & Rows.Count).End(xlUp).Row .Range("A2:P" & derlig).ClearContents 'ecriture Infos automatiques derlig = Worksheets("Import_CSV").Range("A" & Rows.Count).End(xlUp).Row Worksheets("Import_CSV").Range("A2:A" & derlig).Copy .Range("E2:E" & derlig) Worksheets("Import_CSV").Range("B2:B" & derlig).Copy .Range("H2:H" & derlig) Worksheets("Import_CSV").Range("C2:C" & derlig).Copy .Range("I2:I" & derlig) Worksheets("Import_CSV").Range("D2:D" & derlig).Copy .Range("L2:L" & derlig) Worksheets("Import_CSV").Range("D2:D" & derlig).Copy .Range("P2:P" & derlig) 'ecriture Infos fixes 'A: R1W5R1W5 .Range("A2:A" & derlig) = "R1W5R1W5" 'B: TV .Range("B2:B" & derlig) = "TV" 'C: R1W5R1W5 .Range("C2:C" & derlig) = "R1W5R1W5" 'D: N .Range("D2:D" & derlig) = "N" 'F: UJF2015 .Range("F2:F" & derlig) = "UJF2015" 'G: UJF2015 .Range("G2:G" & derlig) = "UJF2015" 'J : 1,98001E+11 .Range("J2:J" & derlig) = "1,98001E+11" 'K : 10101010101 .Range("K2:K" & derlig) = "10101010101" 'M: FR .Range("M2:M" & derlig) = "FR" 'N: EUR .Range("N2:N" & derlig) = "EUR" 'O: structure UJF .Range("O2:O" & derlig) = "structure UJF" End With End Sub
SliDeeNz
Messages postés
223
Date d'inscription
lundi 28 septembre 2015
Statut
Membre
Dernière intervention
4 avril 2016
17
1 oct. 2015 à 15:54
1 oct. 2015 à 15:54
Re,
Oui c'est bien ça ! sa fonctionne niquel !
Juste que mon entête du Excel disparait toujours après l'importation.
Je vais essayer de la coder en dur grâce a l'exemple présent dans le codage, je te tiens au courant !
Oui c'est bien ça ! sa fonctionne niquel !
Juste que mon entête du Excel disparait toujours après l'importation.
Je vais essayer de la coder en dur grâce a l'exemple présent dans le codage, je te tiens au courant !
f894009
Messages postés
17268
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 mars 2025
1 713
>
SliDeeNz
Messages postés
223
Date d'inscription
lundi 28 septembre 2015
Statut
Membre
Dernière intervention
4 avril 2016
1 oct. 2015 à 15:55
1 oct. 2015 à 15:55
Re,
a quelle ligne vous mettez vos entetes ??????????????????
a quelle ligne vous mettez vos entetes ??????????????????
SliDeeNz
Messages postés
223
Date d'inscription
lundi 28 septembre 2015
Statut
Membre
Dernière intervention
4 avril 2016
17
1 oct. 2015 à 16:12
1 oct. 2015 à 16:12
Re,
C'est bon les entêtes fonctionne, c'était du a un problème avec mon fichier CSV !
Dernière chose,
dans le fichier CSV j'ai une case qui indique si la personne a modifier son profil, en a créé un ou n'a pas effectué de modification.
Seul les personnes ayant créé un profil m'intéresse et doivent figurer dans le fichier Excel, est-ce qu'il est possible de créé un genre de filtre pour faire cela ?
La colonne contenant ces information dans le fichier CSV est la "F" et les différentes informations sont : "no_change","create","update".
Je ne doit garder que les create sans afficher cette information dans le fichier Excel.
C'est bon les entêtes fonctionne, c'était du a un problème avec mon fichier CSV !
Dernière chose,
dans le fichier CSV j'ai une case qui indique si la personne a modifier son profil, en a créé un ou n'a pas effectué de modification.
Seul les personnes ayant créé un profil m'intéresse et doivent figurer dans le fichier Excel, est-ce qu'il est possible de créé un genre de filtre pour faire cela ?
La colonne contenant ces information dans le fichier CSV est la "F" et les différentes informations sont : "no_change","create","update".
Je ne doit garder que les create sans afficher cette information dans le fichier Excel.
f894009
Messages postés
17268
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 mars 2025
1 713
>
SliDeeNz
Messages postés
223
Date d'inscription
lundi 28 septembre 2015
Statut
Membre
Dernière intervention
4 avril 2016
1 oct. 2015 à 16:23
1 oct. 2015 à 16:23
Re,
Je ne doit garder que les create Ah bon!!
Vous avez de la chance que ca ne casse pas trop le travail fait depuis le debut. C'est tout, pas d'autre(s) plaisanterie(s) ??
Je ne doit garder que les create Ah bon!!
Vous avez de la chance que ca ne casse pas trop le travail fait depuis le debut. C'est tout, pas d'autre(s) plaisanterie(s) ??
f894009
Messages postés
17268
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
29 mars 2025
1 713
1 oct. 2015 à 16:37
1 oct. 2015 à 16:37
Re,
code modifie:
code modifie:
Sub Traitement() With Worksheets("feuil1") 'raz cellules derlig = .Range("A" & Rows.Count).End(xlUp).Row .Range("A2:P" & derlig).ClearContents 'ecriture Infos automatiques derlig = Worksheets("Import_CSV").Range("A" & Rows.Count).End(xlUp).Row Worksheets("Import_CSV").Range("A2:A" & derlig).Copy .Range("E2:E" & derlig) Worksheets("Import_CSV").Range("B2:B" & derlig).Copy .Range("H2:H" & derlig) Worksheets("Import_CSV").Range("C2:C" & derlig).Copy .Range("I2:I" & derlig) Worksheets("Import_CSV").Range("D2:D" & derlig).Copy .Range("L2:L" & derlig) Worksheets("Import_CSV").Range("D2:D" & derlig).Copy .Range("P2:P" & derlig) Worksheets("Import_CSV").Range("F2:F" & derlig).Copy .Range("A2:A" & derlig) 'suppression lignes <> "create" For x = derlig To 2 Step -1 If .Range("A" & x) <> "create" Then .Rows(x).Delete End If Next x 'ecriture Infos fixes derlig = .Range("A" & Rows.Count).End(xlUp).Row 'A: R1W5R1W5 .Range("A2:A" & derlig) = "R1W5R1W5" 'B: TV .Range("B2:B" & derlig) = "TV" 'C: R1W5R1W5 .Range("C2:C" & derlig) = "R1W5R1W5" 'D: N .Range("D2:D" & derlig) = "N" 'F: UJF2015 .Range("F2:F" & derlig) = "UJF2015" 'G: UJF2015 .Range("G2:G" & derlig) = "UJF2015" 'J : 1,98001E+11 .Range("J2:J" & derlig) = "1,98001E+11" 'K : 10101010101 .Range("K2:K" & derlig) = "10101010101" 'M: FR .Range("M2:M" & derlig) = "FR" 'N: EUR .Range("N2:N" & derlig) = "EUR" 'O: structure UJF .Range("O2:O" & derlig) = "structure UJF" End With End Sub
SliDeeNz
Messages postés
223
Date d'inscription
lundi 28 septembre 2015
Statut
Membre
Dernière intervention
4 avril 2016
17
1 oct. 2015 à 16:54
1 oct. 2015 à 16:54
Re,
Non tout fonctionne bien,
Merci !
Non tout fonctionne bien,
Merci !
29 sept. 2015 à 12:33
Pour l'instant j'ai fait la création du bouton et j'ai compris la première partie du code :
Mais j'ai un petit problème qui apparait, il passe toujours dans le IF même si je sélectionne un fichier CSV.
Tu as une petite idée du problème ? Merci beaucoup !
29 sept. 2015 à 12:58
remplacez cette ligne
par
et
remplacez cette ligne:
par
A+
29 sept. 2015 à 13:50
Je vient de l'identifier : CheminFichier
Dans le IF CheminFichier avait un "S" devant.
Maintenant tout fonctionne !
Je passe donc a la deuxième partie du codage.
Pour l'instant je n'ai fait que un copié coller est j'essaie de comprendre,
j'ai une erreur a cette endroit la :
Tu indiques que "le nom est a adapter", je doit donner un nous au fichier qui va être créé ici (à l'endroit ou il y à Data_TXT) c'est bien sa ?
En tout cas je l'est nommé "test_integration" et la lors de l'exécution j'ai une erreur qui me dit que l'indice n'appartient pas a la sélection. (erreur d'exécution "9").
D'où vient l'erreur et est ce que j'ai bien compris le fonctionnement ?
Merci d'avance pour ta réponse et bonne journée.
29 sept. 2015 à 14:01
Pour le "S" en trop, ma faute suite a modif.
L'import fichier doit ce faire dans un onglet du nom que vous aurez choisi et vous devez mettre ce nom a la place de Data_TXT dans les deux lignes de programme.
Pour avoir le bon nombre de colonne importee, selectionnez l'onglet d'import, ensuite vous devez aller dans menu developpeur, enregistrer une macro, ok, menu donnees, donnees externes, fichier txt, choix du fichier (ici un csv) et suivre les indications de choix
A+
Modifié par SliDeeNz le 29/09/2015 à 15:07
D'accord, j'ai compris et sa fonctionne.
Maintenant je doit trier les différentes informations pour pouvoir placer l'email dans la colonne email, pareil pour nom, prénom, etc...