Macro - déplacement de cellules en fonction de valeurs...

Résolu/Fermé
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015 - Modifié par chingy1997 le 28/01/2014 à 16:36
 chingy1997 - 6 févr. 2014 à 07:23
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
A voir également:

20 réponses

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 28/01/2014 à 19:09
Bonjour

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

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

Cdlmnt
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
29 janv. 2014 à 09:38
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,
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
29 janv. 2014 à 10:20
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
29 janv. 2014 à 11:43
Merci Eric pour ta reponse mais il me semble que la macro n'est pas complete, non ?
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
Modifié par eriiic le 29/01/2014 à 13:13
https://www.cjoint.com/?DADnnwHXz0M
J'ai oublié quoi ?

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
29 janv. 2014 à 14:39
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...
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
Modifié par chingy1997 le 29/01/2014 à 15:41
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
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
Modifié par eriiic le 30/01/2014 à 00:42
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
Modifié par chingy1997 le 30/01/2014 à 08:01
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...
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
Modifié par chingy1997 le 30/01/2014 à 08:58
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.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
Modifié par eriiic le 30/01/2014 à 09:03
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
Modifié par chingy1997 le 30/01/2014 à 10:14
Ci joint l'exemple:
https://www.cjoint.com/?DAEjU3NYlxz

Il faut l'appliquer avant l'autre macro que tu m'as faite...
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
30 janv. 2014 à 09:33
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
Modifié par chingy1997 le 30/01/2014 à 10:47
Normalement, je travaille avec libreoffice (donc pas de soucis de ligne), et je fait tout a la mano, ca me prend un temps fou... J'ai donc décidé de faire des macros. Malheureusement, l'enregistreur de macro de libreoffice fonctionne mal... J'ai donc basculé sur excel (version 2000) qui a un enregistreur de macro efficace pour la mise en forme de base... Mais maintenant je suis conicé avec cette satanée limitation de lignes...
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
30 janv. 2014 à 11:47
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
30 janv. 2014 à 13:04
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.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
30 janv. 2014 à 15:10
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
30 janv. 2014 à 16:13
exactement
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
31 janv. 2014 à 09:46
non, les stations agrègent les données sur 3 mois, c'est un fichier par trimestre.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
Modifié par eriiic le 31/01/2014 à 11:07
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
Modifié par chingy1997 le 31/01/2014 à 11:35
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
31 janv. 2014 à 11:39
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.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
31 janv. 2014 à 12:03
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
31 janv. 2014 à 13:30
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...
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
31 janv. 2014 à 15:23
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
31 janv. 2014 à 16:18
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.
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
31 janv. 2014 à 16:23
http://cjoint.com/14jv/DAEjzgds575.htm

Sur cet exemple, j'avais un trou de 42' (multiple de 6'), donc 6 lignes à sauter.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
Modifié par eriiic le 31/01/2014 à 17:03
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
31 janv. 2014 à 18:16
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,
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
31 janv. 2014 à 19:03
ok.
Avec le rouge :
https://www.cjoint.com/?DAFtc3kdMD9

BonWE
eric
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
Modifié par chingy1997 le 3/02/2014 à 07:56
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à ?
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
3 févr. 2014 à 08:19
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...
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
3 févr. 2014 à 10:24
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
Modifié par chingy1997 le 3/02/2014 à 10:42
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
3 févr. 2014 à 12:52
si tu veux bien me donner ton mail, je t'envoie le fichier...
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
Modifié par eriiic le 3/02/2014 à 13:07
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
Modifié par chingy1997 le 3/02/2014 à 13:52
ç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
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
3 févr. 2014 à 14:01
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
3 févr. 2014 à 15:20
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
4 févr. 2014 à 07:38
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.
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
4 févr. 2014 à 07:49
petite précision certainement sans importance.. Quand j'ouvre ton fichier, il me demande de confirmer d'activer les macro, ce que je fais, et il ouvre 2 fichiers ! un fichier nommé Classeur1 et ton fichier...

https://www.cjoint.com/?DBehXa4V6vk
Cf barre des taches
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
4 févr. 2014 à 07:54
A l'importation du csv, il crée bien une 3ème fichier, nommé classeur 2 (vide) mais l'erreur d'EXE 13 vient arrêter la moulinette...
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
4 févr. 2014 à 08:02
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
4 févr. 2014 à 08:14
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...
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
4 févr. 2014 à 08:42
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
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
Modifié par eriiic le 4/02/2014 à 10:43
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
Modifié par chingy1997 le 4/02/2014 à 15:53
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 )
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
Modifié par eriiic le 4/02/2014 à 16:50
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
4 févr. 2014 à 19:07
Bon ben, merci pour ton aide, Eric.
T'es un bon, ya pas a dire :)
A bientôt peut être sur ce forum..
Salutations,
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
4 févr. 2014 à 19:39
Ben de rien, bonne continuation
eric
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
Modifié par chingy1997 le 5/02/2014 à 08:11
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
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
5 févr. 2014 à 09:48
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
0
chingy1997 Messages postés 66 Date d'inscription mardi 28 janvier 2014 Statut Membre Dernière intervention 28 janvier 2015
5 févr. 2014 à 11:41
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
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
5 févr. 2014 à 16:04
Regarde si ça va bien : https://www.cjoint.com/?DBfqdb5Jd58

eric
0