Macro - déplacement de cellules en fonction de valeurs... [Résolu/Fermé]

Signaler
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015
-
 chingy1997 -
Salut à tous,
Je débute sur excel, je suis un novice en macro, j'ai fait qqs macro via l'enregistreur... certaines ont fonctionné, mais celle ci ne fonctionne pas !! je vous explique mon problème.
je récupère des fichiers csv que je veux mettre en forme pour pouvoir analyser les données plus facilement.

J'ai un tableau avec 4 colonnes et 300 lignes (pour simplifier).
Colonne 1 : la date
colonne 2: l'heure
Colonne 3: Les 100 premières lignes sont le mot "débit", les 100 suivantes le mot "taux" et les 100 dernières le mot "vitesse",
Colonne 4: les 100 premières lignes sont la valeur du débit, les 100 suivantes la valeur du taux et les 100 dernières la valeur de la vitesse.

Je veux obtenir 5 colonnes de 100 lignes:
Colonne 1 : la date
colonne 2: l'heure
colonne 3 : la valeur du débit
colonne 4: la valeur du taux
colonne 3 : la valeur de la vitesse

EDIT: petite precision. j'ai pris 100 mais c'est variable d'un fichier a l'autre. IL faut faire le controle de l'attribut (debit, taux ou vitesse) et le ranger dans l'ordre sur une autre colonne en fait)

Si vous avez une idee, ca me serait très utile. Avec l'enregistreur de macro, et le filtre auto sur la colonne 3 (je selectionne la vitesse, ca filtre, je copie/colle dans une autre colonne, etc.. mais ca ne marche pas...

Merci a vous

20 réponses

Messages postés
9678
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
1 mars 2021
2 045
Bonjour

Un exemple sans macro à adapter
https://www.cjoint.com/?3ACs741lOp0

RQ. si tu tiens à tout prix a une macro, tu dis

Cdlmnt
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

oui, merci pour ta réponse.
ton système fonctionne bien mais je prefere une macro car j'ai des 10 aines de fichiers à analyser (peut etre 100), une macro serait plus pratique..

https://www.cjoint.com/?DADjLQH96R5

Voici mon fichier original (tres allégé, plus de 22k lignes sinon)
Merci de votre aide.
Salutations,
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
Bonjour à tous,

Une proposition pendant que ccm81 prend son petit dej :
Sub synthese()
    Dim derlig As Long, nbData As Long
    derlig = Cells(Rows.Count, 1).End(xlUp).Row
    nbData = (derlig - 1) \ 3
    [N:R].ClearContents ' nettoyer
    [N1] = "groupage": [O1] = "nature": [P1] = "Débit": [Q1] = "Taux": [R1] = "Vitesse" ' titres
    [N2:O2].Resize(nbData) = [I2:J2].Resize(nbData).Value ' date-heure
    [P2].Resize(nbData) = [L2].Resize(nbData).Value ' Débit
    [Q2].Resize(nbData) = [L2].Offset(nbData).Resize(nbData).Value ' Taux
    [R2].Resize(nbData) = [L2].Offset(nbData * 2).Resize(nbData).Value ' Vitesse
    [O:O].NumberFormat = "hh:mm:ss"
End Sub


eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Merci Eric pour ta reponse mais il me semble que la macro n'est pas complete, non ?
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
https://www.cjoint.com/?DADnnwHXz0M
J'ai oublié quoi ?

eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Non, tu n'as rien oublié, mais je ne voyais pas l ensemble de la macro mais seulement la 1 ere ligne, au bureau...
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Alors, ca marche bien sur ton tableau mais ca bug sur le mien...

Il met dit
"erreur d'exécution "1004"
erreur définie par l'application ou par l'objet

Et la ligne ci-dessous est surlignée.

[N2:O2].Resize(nbData) = [I2:J2].Resize(nbData).Value ' date-heure

Mais c'est pas loin...
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Si si, ca marche parfaitement bien.

Mon soucis, c'est que mon fichier csv contient 70000 lignes env., et avec excell 2000, il l'ouvre pas completement, il tronque les dernieres lignes...

nbData = (derlig - 1) \ 3 : ce calcul ne peux pas se faire correctement, ca n'est pas un entier ?
Si le soucis vient de la, il faudrait prendre nbData=nb de lignes de débit


Je viens de tester en tronquant également les derneires lignes de debit, taux et vitesse et ca marche.

Confirmes moi ca stp.
merci
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
nbData = (derlig - 1) \ 3 : ce calcul ne peux pas se faire correctement, ca n'est pas un entier ?
Si c'est un entier
nbData = nombre de lignes de données.
En théorie, tu en as bien 'nombre total de lignes de données' / 3
\ est en vba la division entière, juste plus rapide que /

Maintenant si tu ne peux pas ouvrir le fichier en entier c'est clair que le résultat est faussé.
Remplacer par :
nbData = Evaluate("COUNTIF(K:K,""Débit"")")
Qui sera exact dans tous les cas.
Bien sûr il y aura des lignes incomplètes sur excel 2000...

eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Bonjour,
Petit retour sur ta macro. Elle marche avec la nouvelle NbData, sauf pour les vitesses (les lignes tronquées du bas de tableau).
Les colonnes sont bien créés, elles sont remplies sauf la colonne vitesse qui est vide.
Faudrait créer une nbData spéciale pour les vitesses, genre

Sub MEF5()
Dim derlig As Long, nbData As Long, nbData2 As Long
derlig = Cells(Rows.Count, 1).End(xlUp).Row
nbData = Evaluate("COUNTIF(K:K,""Débit"")")
nbData2 = Evaluate("COUNTIF(K:K,""Vitesse"")")
[N:R].ClearContents ' nettoyer
[N1] = "groupage": [P1] = "Débit": [Q1] = "Taux": [R1] = "Vitesse" ' titres
[N2:O2].Resize(nbData) = [I2:J2].Resize(nbData).Value ' date-heure
[P2].Resize(nbData) = [L2].Resize(nbData).Value ' Débit
[Q2].Resize(nbData) = [L2].Offset(nbData).Resize(nbData).Value ' Taux
[R2].Resize(nbData2) = [L2].Offset(nbData2 * 2).Resize(nbData2).Value ' Vitesse
[O:O].NumberFormat = "hh:mm:ss"
End Sub


Ca deconne un poil, les 1eres lignes des vitesses sont des taux, ca se decale un chouya...
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Nouvelle version:


Sub MEF5()
Dim derlig As Long, nbData As Long, nbData2 As Long, nbData3 As Long
derlig = Cells(Rows.Count, 1).End(xlUp).Row
nbData = Evaluate("COUNTIF(K:K,""Débit"")")
nbData2 = Evaluate("COUNTIF(K:K,""Taux"")")
nbData3 = Evaluate("COUNTIF(K:K,""Vitesse"")")
[N:R].ClearContents ' nettoyer
[N1] = "groupage": [P1] = "Débit": [Q1] = "Taux": [R1] = "Vitesse" ' titres
[S1] = nbData: [S2] = nbData2: [S3] = nbData3
[N2:O2].Resize(nbData) = [I2:J2].Resize(nbData).Value ' date-heure
[P2].Resize(nbData) = [L2].Resize(nbData).Value ' Débit
[Q2].Resize(nbData2) = [L2].Offset(nbData).Resize(nbData2).Value ' Taux
[R2].Resize(nbData3) = [L2].Offset(nbData + nbData2).Resize(nbData3).Value ' Vitesse
[O:O].NumberFormat = "hh:mm:ss"
End Sub

Ca marche bien à priori. Tu m'as bien aidé, merci.

Par contre, j'ai un autre soucis maintenant.. Je récupère des données pourries avec des "trous", cad avec les plages horaires qui n'existent pas... Ce sont des données 6', l'idéal serait de pouvoir controler si le pas de chaque ligne est bien de 6', sinon rajouter le nombre de lignes manquantes (si la station de comptage n'a pas fonctionnée pdt 1/2h, il manque 5 lignes), et mettre l'attribut qui va bien (pour que la macro precedente fonctionne).

Donne moi ton avis sur la faisabilité de la chose (c'est une macro spécifique à appliquer avant cette macro de mise en forme).
Encore merci.
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
Bonjour,

il est où le fichier de travail avec les différents cas ?
Avec les explications complètes de ce que tu veux faire. Mettre aussi le résultat attendu.
eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Ci joint l'exemple:
https://www.cjoint.com/?DAEjU3NYlxz

Il faut l'appliquer avant l'autre macro que tu m'as faite...
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Typiquement, je controle en faisant une mise en forme conditionnelle sur une nouvelle colonne créée, qui calcule le pas de 6'. Si la valeur est différente de 6', ca se met en rouge. Je passe l'intégralité du tableau comme ça et je saute autant de lignes que d'occurences manquantes...

https://www.cjoint.com/?DAEjzgds575
Sur cet exemple, manque 42' , je saute 6 lignes.

Malheureusement, je ne peux plus rajouter de lignes... ARf
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
Comment importes-tu le csv ? Manuellement ou par macro ?
Le mieux est sans doute de réfléchir et de tout reprendre à 0....

Peux-tu déposer un extrait de csv au format texte ? Une 30aine (x3 champs en cohérences) de lignes suffisent.
1) C'est toujours 6' pile-poil ou il peut y avoir un décalage de quelques secondes au fil du temps ?
2) Combien de secondes max ?
3) en comptant très large, combien de lignes à insérer maxi ?
4) sur 2000, 65536 lignes ?
5) Est-ce toujours la même journée dans un csv ?

Il faudra attendre que j'ai un peu de temps dispo...

eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Voici un fichier csv allégé que je reçois:
https://www.cjoint.com/?DAEm0a9vFgj

le pas est toujours de 6' pile.

Ici, les csv sont agrégés sur 3 mois (01/10/12 au 31/12/12, soit 22081 lignes pour les débit, puis 22081 pour le taux, puis 22081 lignes pour les vitesses, soit 66243 lignes > 65536 max de XLS2000).

Généralement, j'ai une 40 aine ou 50aine de lignes à ajouter à la main. (il peut arriver qu'il y ait bcp plus, la station de comptage est en panne une semaine par ex. mias dans ce cas, j'élimine la donnée). Ca, c'est le plus chiant à faire, reperer les trous dans le tableau, et inserer les lignes pour avoir des "matrices" identiques pour chaque csv. J'ai un csv par station de comptage, et je fait des analyses en comparant des stations, etc..).

Merci de ton aide.
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
Et au final tu n'as besoin que du résultat sous cette forme :
groupage	nature	Débit	Taux	Vitesse
01/10/2012 00:05:59 15 2 92
01/10/2012 00:11:59 12 1 97
01/10/2012 00:17:59 16 1 93
Avec ajout des date-heures manquantes.
Avoir l'original des 70000 lignes t'est inutile. Tu confirmes ?

eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

exactement
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
Bonjour,

Ca peut dépasser 250 jours par fichier ?
Si oui, combien max ?
eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

non, les stations agrègent les données sur 3 mois, c'est un fichier par trimestre.
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
C'est jouable...

Seulement on a beaucoup parlé du résultat intermédiaire que tu envisageais, mais peu (ou alors très dispersé dans les 20 posts) du résultat final.
Vu que je me passe de cette étape intermédiaire bloquante sur 2000, j'aimerais une synthèse du résultat final style :
groupage nature Débit Taux Vitesse
01/10/2012 00:05:59 15 2 92
01/10/2012 00:11:59 12 1 97
01/10/2012 00:17:59 16 1 93

1) Tes titres de colonnes sont erronés par rapport au csv pour Date, Heure.
csv : jour, sequence là où tu as mis : groupage nature
Quels titres exacts veux-tu ?

2) Si il manque 1 ou 2 données :
- on laisse vide ?
- on remplace par 0 ? par "-" ou autre chaine ?
- on supprime la ligne ?
- autre chose ?

3) il manque les 3 données : à partir de combien de lignes vides consécutives supprime-t-on les lignes ?

4) doit-on laisser une ligne vide, ou avec 0, ou avec des "-", ou autre chose en ligne de séparation pour alerter ?
Attention au résultat si tu dois faire des courbes. Tester avant de répondre.

5) faut-il un rapport des date-heure début et fin des lignes supprimées ?

Le gros du programme est fait, il ne manque que la restitution et je suis bloqué là dessus. Merci de répondre aux 5 points en les numérotant.

eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Bonjour et merci encore de ton aide.

1) Pour les titres, peu importe. groupage nature Débit Taux Vitesse me va.

2), 3) et 5) Il ne manque jamais de données sur une meme ligne. Par contre, il manque systématiquement des lignes dans le tableau. Il ne faut jamais supprimer de lignes.

4) Les lignes à rajouter (pour conserver le pas de 6') pourraient être complétées par la date et l'heure (avec cellules correspondantes rouges pour avertir). Par contre, il ne faut pas rajouter de données (surtout pas 0).

5bis) le rapport peut donner le nombre total de lignes du tableau et le nombre de lignes ajoutées.

voila
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Pour les données manquantes sur les lignes ajoutées à postériori, je peux les rajouter à la main.
Ca serait difficile de "générer" des données à partir de tendances des jours prédédents, et ca pourrait être faux, surtout si le créneau manquant est long.
Si, je fais des analyses journalieres ou hebdomadaires, je selectionnerai des données completes. Si je fais des analyses trimestrielles, s'il manques 40 lignes sur 22k lignes, c'est pas grave, les tendances restent les memes.
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
Il ne faut jamais supprimer de lignes.
ok, je m'étais embrouillé. C'est d'autant plus simple comme ça

Nouvelle question :
En premier lieu je pars de la 1ère date-heure et je génère d'office toutes les date-heure par pas de 6'.
En fonction de la date-heure lue sur une ligne du csv (date2), je calcule le numéro de lig de donnée avec : lig = Round((date2 - date1) / sixMinutes + 1, 0)
date1=date_heure initiale lue en ligne 2 du csv
Est-ce que toutes les données respectent le même pas ?

En cas d'interruption par exemple, est-ce que je ne risque pas de trouver une heure absente et me retrouver avec un décalage? Ca obligera à gérer plusieurs date-heure initiales et c'est un gros boulot...

Et est-ce fréquent ?
Je pourrais sans doute t'envoyer dans la journée une 1ère version qui ne traite pas ce cas que tu commences les tests sur des gros fichiers. A comparer avec les résultats que tu as traité à la main .

eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Arf, je ne suis pas sur d'avoir bien compris la question.

Toutes les données respectent le même pas de 6', 24h/24 et 7j/7.
Les interruptions peuvent être > à 1 heure, même si c'est plutot rare (panne de réseau, maintenance, etc...)

Es-ce fréquent ? Si tu parles des "trous" de données, il y en a systématiquement.
Ca peut être entre une 40aine de lignes pour les "meilleurs", bcp plus pour les pires.
C'est pour ça que le nombre de lignes ajoutées m'interesse, cela préjuge de la qualité du fichier...
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
Les interruptions peuvent être > à 1 heure, même si c'est plutot rare
C'est bien là la question.
Dernière donnée : 0:05:59, arrêt d'environ 1 h .
Chance quasi nulle qu'on retombe dans les mêmes date-heure non ?
Les données suivantes seront inscrite par exemple à 01:17:59 alors que la donnée réelle sera peut-être 01:19:15.
Ca ne te pose pas de pb ?

eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Non, les pas sont toujours de 6' et les trous sont toujours des multiples de 6'
les données sont toujours enregistrées aux mêmes heures, le pas est régulier.

tu peux générer d'office toutes les date-heure par pas de 6'.
Du 1er octobre 2012 au 31 décembre 2012, tous les tableaux doivent contenir 22081 lignes, qui sont le nombre d'occurrences de 6 min durant ces 3 mois.

Le tableau généré doit donc contenir 22081 lignes, avec les lignes vides qui correspondent aux trous dans les données.
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

http://cjoint.com/14jv/DAEjzgds575.htm

Sur cet exemple, j'avais un trou de 42' (multiple de 6'), donc 6 lignes à sauter.
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
Désolé mais je n'aime pas mettre de titres qui ne correspondent pas aux données. J'ai donc mis : jour, sequence

J'ai oublié le rouge, je verrais ça ce soir.
Dans le rapport faut-il le nombre de lignes vides ?

A tester en long en large et à travers : https://www.cjoint.com/?DAFqZctlpRL
Accepte jusqu'à 250 jours, soit 8 mois. Limite de 2000 mais qui te suffira donc.
Si tu peux ressortir les anomalies tant que c'est frais dans ma tête.

eric

edit: regarde les date-heure sur de gros fichiers. Il y a souvent des erreurs d'arrondi difficiles à maitriser sur la seconde.

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu lorsque c'est le cas (en haut vers votre titre).
Merci
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Merci pour ton travail.
Je ne pourrai malheureusement pas tester ça avant lundi, je pars en WE et je laisse mon ordi au bureau !
A lundi j'espère.
Salutations,
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
ok.
Avec le rouge :
https://www.cjoint.com/?DAFtc3kdMD9

BonWE
eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Bonjour Eric,

Apres avoir testé ton fichier, j'ai une erreur d'exécution '13' (Incompatibilité de type) à cette ligne:

[A2].Resize(UBound(datas, 2), UBound(datas)) = Application.Transpose(datas)


Par contre, j'ai un doute sur l'ordre des colonnes. Tu écris : "Désolé mais je n'aime pas mettre de titres qui ne correspondent pas aux données. J'ai donc mis : jour, sequence"
Sur mes CSV, la 1ere colonne "jour" comporte les valeurs "ouvré, samedi ou dimanche". La colonne séquence est un N (je sais même pas a quoi ceci correspond pour te dire).
La colonne groupage est bien la date de la prise de mesure.
La colonne nature est bien l'heure de la prise de mesure.

Ca pourrait pas venir de là ?
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

https://www.cjoint.com/?DBdipxMLBQ6

ci-joint l'intitulé des colonnes dans la plupart des cas.. Car j'ai remarqué que quelques fichiers comportaient une colonne supplémentaire...
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
Bonjour,

Par contre, j'ai un doute sur l'ordre des colonnes

Tu ouvres mal ton csv. Le séparateur est 'Tab' et non 'espace'. 'Nature de mesure' compte pour 3 champs pour toi...

Les libellé sont quand même plus logiques...
De toute façon tu n'as pas à t'en soucier, c'est la macro qui lit le fichier (mais pas dans excel à cause de ta limitation sur 2000). Et si tu préfères d'autres titres tu peux les modifier (ils sont en fin de macro)

Apres avoir testé ton fichier, j'ai une erreur d'exécution '13' (Incompatibilité de type) à cette ligne
Sur le fichier csv de test que tu as as fourni ? Là je serai embêté, ça serait une autre limitation de 2000 (que je n'ai pas et que je ne connais pas)
Sinon fournir le fichier csv en défaut (réduit si possible, tout en ayant l'erreur).

eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

ah oui, exact pour les noms de colonne :D

Je t'enverrais bien un original par mail (5Mo env)...

Sinon, du bureau, difficile de trouver un site de DDL qui ne soit pas filtré... (cjoint.com n'est pas filtré, c'est miraculeux mais les fichiers trop volumineux ne peuvent pas être envoyés)

chingy1997 at yahoo.fr
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
Il faut le compresser (zip)
Et je n'ai pas eu la réponse si ça fonctionnait sur le fichier de test que tu avais fourni.

eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

ça marche parfaitement bien avec le fichier test de 30 lignes... C'est pile ce qu'il me faut, quoi !
L'erreur apparait sur d'autres fichiers...

passe moi un mail, je t'envoie un gros fichier
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
ok, il fallait s'assurer que ce ne soit pas une incompatibilité excel 2000.
cjoint accepte jusqu'à 8Mo.
Mais compresses quand même ton fichier, il ne fera plus que qcq 100aines de ko. L'upload et le download seront beaucoup plus rapides pour tous les 2.
(j'ai l'impression de me répéter là)

eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
Je n'ai eu aucun pb pour traiter le fichier sur 2003, 22080 lignes de données au final en 2s.

On va tenter autre chose.
Je teste la version d'excel, et pour excel < 2003 je colle différemment les données dans la feuille, ça sera un peu plus lent :
https://www.cjoint.com/?DBdwHrPNtlV
A voir...

eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Bonjour Eric,
Ça veut pas... J'ai ce message d'erreur (le même qu'hier), mais à une ligne différente..

https://www.cjoint.com/?DBehHzN16vM

La ligne surlignée est celle ci :
 If Application.Version >= 11 Then  


C'est rageant car ça a l'air de marcher chez toi.
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Arf, ca à l'air de marcher !!!
J'ai rajouté ça:

Dim x As Byte
x = Val(Application.Version)

Je refais des test et je te dis...
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

ouais, ça fonctionne au poil, même sur des fichiers de mauvaise qualité. Je vais en tester d'autres, bien sur...

J'ai transféré ta macro dans mon classeur de macro :D
Maintenant que celle ci est aboutie, je vais essayer de me faire un bouton dans les menus d'excel, je crois que c'est possible. (enfin, j'en suis sur car j'en ai déjà un dans ma version d'excell)

Encore merci a toi pour ta générosité et son talent :)
Bravo
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

bouton créé, très pratique...
Je vais essayer de rajouter les informations perdues dans une cellule, à droite du tableau généré, genre le code de la station (en fait les cellules de A1 à E2).
Ces infos me sont nécessaires pour positionner les stations de façon précise.
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

J'ai rajouté les titres des nouvelles cellules de F1 à J1 mais je ne sais pas comment coller les infos dessous, dans les cellules F2 à J2 (pour que j'aie l'info une fois au moins).

https://www.cjoint.com/?DBejHHliidb

Encore merci...
Dommage qu'on puisse pas évaluer les contributeurs :D
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

C'est sans limite, en fait...
Je pourrais même automatiser la réalisation de graphiques, aussi...
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
Bonjour,

bouton créé, très pratique...
Si tu n'utilisais pas le bouton pour lancer la macro il est possible que tu ne lançais pas la bonne procédure.
C'est vrai que je n'avais pas mis d'explication, mais ça me paraissait évident. Du coup je me demande si la dernière modif est vraiment nécessaire.
Met en commentaire qcq lignes avec une ' pour tester, elle sera plus rapide :
'    If Application.Version >= 11 Then
'        ' excel >= 2003
        [A2].Resize(UBound(datas, 2), UBound(datas)) = Application.Transpose(datas)
'    Else
'        ' excel 2000
'        For lig = 1 To UBound(datas, 2)
'            For col = 1 To 5
'                Cells(lig + 1, col) = datas(col, lig)
'            Next col
'        Next lig
'    End If


Maintenant que celle ci est aboutie, je vais essayer de me faire un bouton dans les menus d'excel, je crois que c'est possible. (enfin, j'en suis sur car j'en ai déjà un dans ma version d'excell)
Plus simple, tu peux juste ajouter un raccourci clavier sur la macro principale.

genre le code de la station (en fait les cellules de A1 à E2)
???
Ton fichier csv comporte une ligne de titre, la ligne 2 est une ligne de donnée.
A moins que tu n'aies pas fourni un fichier csv original ? Ce qui ne serait pas terrible...

mais je ne sais pas comment coller les infos dessous, dans les cellules F2 à J2 (pour que j'aie l'info une fois au moins).
Comme je ne sais pas d'où tu sors ces données et que ta capture écran n'apporte rien difficile de répondre.
Le principe est :
range("F2") = ta_donnée
ou en raccourci :
[F2] = ta_donnée

eric

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu lorsque c'est le cas (en haut vers votre titre).
Merci
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Re,
Initialement, j'ai bien testé ta macro avec ton bouton... J'avais compris l'utilité du bouton :D

Ce qui me manquerait, c'est d'avoir les données des cellules A1xE2 de ce screen (fichier original que tu as eu) :
https://www.cjoint.com/?DBepzpmQEMm dans le nouveau fichier, a coté du tableau crée (cf screen précédent http://cjoint.com/14fe/DBejHHliidb.htm )
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
J'avais compris l'utilité du bouton :D
Je me disais aussi... ;-)
Donc c'est bien 2000 qui est plus chatouilleux sur les conversions automatiques des variants

Pour le reste voilà :
https://www.cjoint.com/?DBeqXf3mZ7U

Mais les valeurs 'Station Code Station Code Canal Lib Canal Libellé groupage' sont identiques sur toutes les lignes.
Cette valeur n'était pas à copier sur une (ou toutes) ligne ?

Tu n'oublieras pas de mettre en résolu le moment venu
eric

edit: modif du fichier. J'avais été trop généreux et mis tous les noms des champs

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu lorsque c'est le cas (en haut vers votre titre).
Merci
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Bon ben, merci pour ton aide, Eric.
T'es un bon, ya pas a dire :)
A bientôt peut être sur ce forum..
Salutations,
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Arf, les valeurs n'apparaissent pas :(
oui, elles sont identiques sur toutes les lignes, mais me faut l(info au moins une fois pour éviter de mélanger les fichiers, surtout quand tu en as plusieurs ouverts en même temps.
ex:
Station Code Station Code Canal Lib Canal Libellé groupage
S22____MB133.B_______1_______5009.01 1 ______5009.01 1

je suis pénible, je sais
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
Bonjour,

Oui, je t'en parlais au dernier post...
info au moins une fois
3 fois alors c'est bon ? Soit précis, tu les veux une fois ou sur toutes les lignes ?

eric
Messages postés
66
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2015

Je voudrais les infos une seule fois sur 1 seule ligne, à droite du tableau généré.
enfin sur 2 lignes, une ligne d'entete (sur la ligne 1) et la ligne des données en ligne 2

Station Code Station Code Canal Lib Canal Libellé groupage
S22____MB133.B_______1_______5009.01 1 ______5009.01 1
Messages postés
23901
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
6 671
Regarde si ça va bien : https://www.cjoint.com/?DBfqdb5Jd58

eric
La, ça marche nickel... Merci Eric. Et je te cite à la fin de mon rapport :D

Des gens comme toi, c'est rare :)
A la fois compétent et généreux, je dis bravo
++