Amélioration de mon code, svp!!

Lynk Zel

XLDnaute Junior
Bonjour à toutes et à tous.


Voilà, j'ai le code suivant :

Sub Test()
Dim DialOuvr As FileDialog, Rep, Chemin As String
Set DialOuvr = Application.FileDialog(msoFileDialogOpen)
DialOuvr.Filters.Clear
DialOuvr.Filters.Add "Fichiers CSV", "*.csv", 1
DialOuvr.AllowMultiSelect = False
DialOuvr.Title = "Ouverture du fichier CSV"
DialOuvr.InitialView = msoFileDialogViewList
'DialOuvr.InitialFileName = "C:\Mes Fichiers CSV\"
Rep = DialOuvr.Show
If Rep = 0 Then
MsgBox "Opération annulée"
Exit Sub
End If
Chemin = DialOuvr.SelectedItems(1)
'-----------------------
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Chemin, Destination:=Range("A3"))
.Name = "test"
.AdjustColumnWidth = False
.TextFileParseType = xlDelimited
.TextFileCommaDelimiter = True
.Refresh BackgroundQuery:=False
End With
'------------------------
ActiveSheet.Rows("1:34").Delete Shift:=xlUp
ActiveSheet.Columns("H:M").Clear
End Sub


le problème, c'est que ce code ne me mets pas mon tableau à la bonne place, voir le fichier ci-joint pour le positionnement.

Si quelqu'un peut m'aider.

merci
@+
 

Lynk Zel

XLDnaute Junior
Re : Amélioration de mon code, svp!!

re,

en fait c'est dans la même ligné de ce qu l'on vient de traiter.
Ce que l'on vient de mettre en place c'était faire une équivalence entre les lignes d'une colonne "description" (séparateur avec "-" tiret 6 ou sans séparateur) dans la feuille "fichier importé" et une ligne d'une colonne "Type french" dans la feuille "tableau de donnée".

Maintenant c'est plus simple (enfin je pense) car il s'agit de faire l'équivalence entre les lignes d'une colonne "type" de la feuille "fichier importé" et une ligne de la colonne "type french" de la feuille "tableau de donnée".
Le nom dans la colonne "type" est le même que dans la colonne "type french" (c'est exactement le même).
Il ne restera plus qu'à l'utilisateur de choisir la difficulté en double-cliquant pour faire appaître "O" et afficher le résultat.

En exemple dans le fichier joint, les cales.
J'en ai 7 différentes (voir descriptions) mais elles appartiennent toutes à la catégorie "cale" et dans mon "tableau de donnée", il y a une ligne qui s'apelle "cale" (Il faudrait modifier le code dans la colonne "résultat" afin de faire correspondre les 2 colonnes C de chaque feuille).
Idem pour l'autre exemple "bague".

Merci
@+
 

Pièces jointes

  • essai9.zip
    22.1 KB · Affichages: 29
  • essai9.zip
    22.1 KB · Affichages: 31
  • essai9.zip
    22.1 KB · Affichages: 32

Lynk Zel

XLDnaute Junior
Re : Amélioration de mon code, svp!!

bonjour Catrice, le forum,

les tableaux sont parfaits et ça marche super.

Un dernier petit détail, ne peut-on pas compiler les 2 tableaux sur un seul classeur avec 2 feuilles :
- sur la première feuille, 3 boutons :
- "recommencer"
- "tableau 1"
- "tableau 2"
- sur la deuxième feuille, mon "tableau de donnée"

Et donc quand je clique sur "tableau 1", par exemple, il m'ouvre la fenetre des fichiers .csv, je choisis le fichier qui va bien et lorsque je clique pour l'ouvrir, il me met le tableau. Et vis versa lorsque je clique sur "tableau 2".

merci et bonne journée
 

Catrice

XLDnaute Barbatruc
Re : Amélioration de mon code, svp!!

Bonsoir,

Tu veux que si tu cliques sur Tableaux1 ça ira chercher les données à convertir dans un Tableau (1) et si tu cliques sur Tableaux2 ça ira chercher les données à convertir dans un Tableau (2) ?
Chaque tableau ayant des "types" de codification différents et c'est l'utilisateur qui decide dans quel tableau faire la conversion ?
 

Lynk Zel

XLDnaute Junior
Re : Amélioration de mon code, svp!!

bonjour Catrice, le forum,

oui en gros c'est ça. lorsque l'on clique sur "tableau 1", la macro sait que c'est le type de tableau 1 qu'il va falloir affiché a l'écran, ne restera plus qu'à l'utilisateur de choisir le fichier .csv à importer.

L'utilisateur aura sur son poste de travail 2 dossiers pour ranger correctement les fichier .csv (1 dossier pour les fichier .csv à importer dans le tableau 1 et 1 autre pour les fichier .csv à importer dans le tableau 2).

ci-joint 4 documents :
- tableau 1
- tableau 2
- fichier importé pour tableau 1
- fichier importé pour tableau 2
 

Pièces jointes

  • essai10.zip
    35 KB · Affichages: 31
  • essai10.zip
    35 KB · Affichages: 32
  • essai10.zip
    35 KB · Affichages: 33

Catrice

XLDnaute Barbatruc
Re : Amélioration de mon code, svp!!

Bonsoir,

Ci-joint un fichier qui contient un onglet Tableau1 et un onglet Tableau2 qu'il te faut renseigner (j'ai trouvé la meme chose dans les 2).
Le bouton Tableau1 chargera le CSV et utilisera une formule qui utilisera le Tableau1 (avec les "-" etc ...)
Le bouton Tableau2 chargera le CSV et utilisera une formule qui utilisera le Tableau2 (avec les désignations exactes).

!! Dans les onglets tableau1 & 2, il y a des noms à réference variables (CTL+" pour voir) qui sont utilisés dans les formules. Ca simplifie et ca automatise le remplissage des tableaux. C.a.d. si tu rajoutes des données dans la colonne C, elles seront automatiquement prise en compte. Mais il ne faut pas de cellule vide entre la cellule C4 et la derniere cellule de la colonne C remplie.
 

Pièces jointes

  • Tableaux.zip
    21.8 KB · Affichages: 26
  • Tableaux.zip
    21.8 KB · Affichages: 24
  • Tableaux.zip
    21.8 KB · Affichages: 24

Lynk Zel

XLDnaute Junior
Re : Amélioration de mon code, svp!!

bonjour Catrice, le forum,

je crois que sur ce coup on sait mal compris (j'ai surement dû mal m'exprimer, dsl). En fait, je n'ai besoin que d'un seul "tableau de donnée". Mais le fait d'avoir 2 "tableau de donnée" (ou 2 base de donnée) est intéressant, je le garde dans mes tiroirs.

Quand je parlai de tableau 1 & 2 c'était le tableau où il y avait le fichier importé avec les colonnes "description", "niveau" et les colonnes où on pouvait faire notre choix (double-cliquer dans une celulle).

ci-joint :
le classeur que j'aimerai avoir ("classeur 1"); J'ai oublié de préciser, lorsque je clique sur un bouton et que j'ai trouvé le fichier .csv, le fichier importé reste sur sur le même classeur.

merci
@+
 

Pièces jointes

  • essai11.zip
    48.6 KB · Affichages: 32
  • essai11.zip
    48.6 KB · Affichages: 32
  • essai11.zip
    48.6 KB · Affichages: 32

Catrice

XLDnaute Barbatruc
Re : Amélioration de mon code, svp!!

Bonjour,

Désolé mais je ne comprend pas ce que tu veux faire ...
Pour moi les fichiers Tableau1 et Tableau2 que tu as envoyé sont exactement identiques pour les onglets "Fichier Importé" et "Tableau de donnée".
La seule chose qui change, c'est la formule dans la colonne H.

Je ne vois pas de "tableau 1 - tuyauterie" ni de "tableau 2 - bague" !?

Je n'ai pas non plus compris ce que devraient faire les boutons "IMPORTER FICHIER 1 & 2". Ils doivent servir à fusionner les bases ? une seule fois ?

Pour mémoire, la solution que je proposait dans le précédent Fil fonctionne de la façon suivante :
L'utilisateur clique sur le bouton Tableau1 ou Tableau2 suivant la façon dont doit etre decodé le fichier.
A partir de là, la formule sera choisie et ventilée dans la colonne H en fonction des données à chercher.
Il suffit d'alimenter les 2 onglets tableau1&2 avec les codes ad-hoc.

Ce n'est pas ce que tu veux faire ?
Veux tu que l'utilisateur choisisse le "Tableau" une fois les données importées ?
 

Lynk Zel

XLDnaute Junior
Re : Amélioration de mon code, svp!!

Bonjour Catrice, le forum,

Dans mon envoi précédent ("essai11"), j'ai mis 2 types de classeur différents aussi bien au niveau de la forme du tableau que de la formule dans la colonne "Résultat" :

- Tableau1 : dans ce tableau 1, il y a ma base de donnée (onglet "tableau de donnée" qui est la même que le tableau 2) et un onglet "fichier importé". Sur ce dernier onglet, on a 2 cellules en haut a gauche avec un numéro (314...) et à côté le nom du fichier importé (ici "tuyauterie" qui est dans mon fichier zip "fichier importé pour tableau 1.csv"). On a aussi les colonnes : "Niveau", "Nom", "Indice", "Description", "Statut", "Masse", "Qté", "Low", "Medium", "High", "Template", "Solide Mort", "Résultat". Avec, effectivement, la formule écrite dans la colonne "résultat" qui prend en compte le séparateur "-", ou non dans la colonne "description" (colonne D).
Et, on retrouve les 2 boutons "RECOMMENCER" et "IMPORTER FICHIER".

- Tableau2 : dans ce tableau 2, il y a ma base de donnée (onglet "tableau de donnée" qui est la même que le tableau 1) et un onglet "fichier importé". Sur ce dernier onglet, on a une seule cellule en haut à gauche avec le nom du fichier (ici "bague" qui est dans mon fichier zip "fichier importé pour tableau 2.csv"). On a aussi les colonnes : "Niveau", "Rèv", "Type", "Description", "Statut", "Low", "Medium", "High", "Template", "Solide Mort", "Résultat". Avec, effectivement, la formule écrite dans la colonne "résultat" qui prend en compte directement le nom dans la colonne "Type" (colonne C).
Et, on retrouve les 2 boutons "RECOMMENCER" et "IMPORTER FICHIER".

Maintenant, ce que j'aimerai avoir, ce serait compiler les 2 classeurs précédents afin de n'avoir plus qu'un classeur avec un onglet "fichier importé" comprennant 3 boutons ("RECOMMENCER", "IMPORTER FICHIER 1", "IMPORTER FICHIER 2") et un autre onglet "tableau de donnée".

Lorsqu'on clique sur "IMPORTER FICHIER 1", on choisit le fichier .csv a importer (ici "fichier importé pour tableau 1.csv") et on a directement la forme du tableau et la formule du "tableau1".
Lorsqu'on clique sur "IMPORTER FICHIER 2", on choisit le fichier .csv a importer (ici "fichier importé pour tableau 2.csv") et on a directement la forme du tableau et la formule du "tableau2".


Par rapport au fichier précédent que tu as envoyé ("tableau.zip"), ça ne marche que sur un seul type de fichier .csv pas sur le 2ème (car la mise en forme du tableau ne correspond pas).
je renvoi ton fichier avec mes 2 types de .csv pour des essais.

J'espère qu'avec ceci ça ira.
merci
@+
 

Pièces jointes

  • tableau.zip
    23 KB · Affichages: 31
  • tableau.zip
    23 KB · Affichages: 28
  • tableau.zip
    23 KB · Affichages: 27

Catrice

XLDnaute Barbatruc
Re : Amélioration de mon code, svp!!

bonjour,

Ok, j'ai compris. Le mieux dans un cas comme celui-ci c'est de mettre en jaune les cellules qui sont différentes ;)

Donc ci-joint, un fichier qui fait (presque) ce que tu souhaites.
Presque, car pour l'imporatation du bague_Éléments1222091071466.csv, je vois un changement de format du fichier.
On ne va plus cher cher les données en A34 ?!
Peux tu confirmer ?

La solution jointe, formate les cellules A1, B1 et C1 mais ne les remplit pas pour le bouton Tableau2.
En revanche, les bonnes formules sont ventilées en H
 

Pièces jointes

  • Tableaux29Sept.zip
    23.2 KB · Affichages: 37

Lynk Zel

XLDnaute Junior
Re : Amélioration de mon code, svp!!

Oui pour le changement de bague.csv, on va chercher en A6.
En revanche, lorsque j'essaie d'importer le fichier bague.csv, il m'affiche un message d'erreur "pas de donnée à transférer" en choisissant aussi bien que "tableau 1" que "tableau 2".
merci
@+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 165
Messages
2 085 879
Membres
103 009
dernier inscrit
dede972