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!!

Hello everybody, Catrice,

super le tableau. Il fonctionne bien (importation des 2 fichiers, choix avec le double-clic, lien avec la base de donnée avec 2 variante, la somme, etc...).
Non vraiment, c'est nickel...
Encore merci pour ton aide!!!
@+
 

Lynk Zel

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

Re Catrice, le forum

je viens de voir deux petites choses :
- la première (assez importante) :
c'est au niveau de la formule en H, pour le tableau1 c'est bon c'est la colonne D ("Description") avec l'histoire du séparateur. Mais pour le tableau2 c'est dans les colonnes C de chaques onglets qui faut faire le lien (=SI(NBVAL(H3:L3)=0;"";INDEX(CodeTB;EQUIV(D3;Tableau;0);EQUIV("O";H3:L3;0))) ).
Quand je change dans la formule il ne me l'applique pas quand je fais "recommencer" (je dois changer autres choses)

- la deuxième (moins importante) :
concernant les titres de mes colonnes de chacun des 2 tableaux. Dans ce que j'ai reçu c'est les mêmes colonnes.
En fait le tableau1 a "Niveau", "Nom", "Indice", "Description", "Statut", "Masse (kg)", "Qté", "Low", "Medium", "High", "Template", "Solide Mort", "Résultat".
Et le tableau2 a "Niveau", "Rèv", "Type", "Description", "Statut", "Masse (kg)", "Qté", "Low", "Medium", "High", "Template", "Solide Mort", "Résultat".

Voilà, se sont les 2 seules choses que j'ai vu.
merci
@+
 

Lynk Zel

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

bonjour Catrice, le forum.

Le classeur est génial et il tourne impec.
Dit je pourrai avoir quelques explications concernant le code VBA, les formules utilisées, la mise en forme des tableaux, etc....
Comme ça, si j'ai d'autres types .csv à importer ou d'autres tableaux à mettre en place, je pourrai "essayer" de le faire moi même. Je prévois pour l'avenir :)

Merci
@+
 

Lynk Zel

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

bonjour Catrice, le forum,

le document word que tu m'as fourni est assez complet, j'ai appris pas mal de choses.

Maintenant, je dois rajouter des colonnes sur la feuille "fichier importé" (en jaune sur le doument joint). C'est valable pour les 2 tableaux, et ca doit faire l'équivalensce entre cette feuille et ma base donnée (onglet "tableau de donnée").
En gros comme avant, sauf que maintenant j'ai 8 colonnes au lieu dans n'avoir que 5 (là je parle que de la partie des cellules "double-clique")

Le problème, c'est que je n'y arrive pas même avec les explications que tu as envoyées.

merci
@+
 

Pièces jointes

  • Tableaux30Sept-1.zip
    17.9 KB · Affichages: 35

Catrice

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

Bonjour,

Ci-joint une version modifiée avec en commentaire dans le Code les lignes qui ont été changées. Tu pourras ainsi voir ce qu'il fallait modifier.
Les noms dans le classeur sont automatiques, il n'y a rien eu à faire.

Je te laisse vérifier le fontionnement.
 

Pièces jointes

  • Tableaux3oct.zip
    24.3 KB · Affichages: 36

Lynk Zel

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

Bonjour catrice, le forum.

Le fonctionnement marche très bien.
Maintenant, c'est plus de la petite mise en forme pour que le classeur soit facile à utiliser.

Pour cela, j'ai encore besoin d'aide.
J'ai joint 2 documents, un "classeur actuel" et un "classeur souhaité".
La différence :
- peut-on surligner une ligne sur 2 avec la même couleur (bleu clair) que sur le classeur (à appliquer sur les 2 tableaux, "tableau1" & "tableau2")
- Cet modification ne concerne que le "tableau1".
peut-on insérer une ligne au début l'importation et récupérer les 2 éléments dans le coin à gauche et les mettre en place comme indiqué dans le "classeur souhaité" (voir couleur jaune). Je crois que actuellement on venait copier 2 cellules et on les collais dans la cellules A1 et B1, et bien là sa serait la même chose mais pour les coller dans la nouvelle ligne qui vient d'être insérer dans les cellules B3 (3141073900 rev 00) et D3 (TUYAUTERIE - INTERMEDIAIRE RECHANGE), et rajouter le zéro dans la colonne "Niveau". serait-il possible aussi de garder la mise en forme gras et gauche (simplement pour la ligne insérer, c'est pour mieux voir l'élément du classeur).^

voila, je crois que c'est tout, si il y a des question, n'hésitez pas.
merci
et @+
 

Pièces jointes

  • fichier CSV.zip
    1 004 bytes · Affichages: 29
  • fichier CSV.zip
    1 004 bytes · Affichages: 30
  • fichier CSV.zip
    1 004 bytes · Affichages: 31
  • classeur souhaité.zip
    26.3 KB · Affichages: 31
  • classeur actuel.zip
    26.2 KB · Affichages: 29

Lynk Zel

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

Bonjour Catrice, le forum,

le classeur est pas mal, mais quand on clique sur le tableau1, il n'y a pas de formule dans la colonne "résultat". Par contre elle y est dans le tableau2.
 

Pièces jointes

  • essais15.zip
    26.7 KB · Affichages: 36

Lynk Zel

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

Bonjour Catrice, le forum,

étant absent quelques jours, je n'ai pas pu répondre avant.
Le tableau fonctionne super et pour l'instant tout va bien (espéront que ça continue :)).
Je te remercie pour ton aide (elle m'a été d'un grand secours).
merci et bonne journée
@+
 

Lynk Zel

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

bonjour Catrice, le forum,

Me revoilà :eek:.
j'aurais encore besoin de votre aide (toutes les modifications sont surlignées en jaunes dans le fichier joint et sont pour les "tableaux 1" et "tableau 2") :

- lorsque je remplace les "O" (qui sont dans le programme VBA) par des "X", il ne me met pas le programme à jour.

- J'aimerais aussi centrer les chiffres de la colonne "résultat".

- Il faudrait intercaler une ligne avant la dernière ligne de mon tableau (pour que les résultats soient plus visible) et marquer à coté de chacun d'eux : pour le résultat en dessous de la colonne "description", ce serait "ndr de références :" et pour le résultat en dessous de la colonne "résultat", ca serait "Total (en heure) :".

Violà s'il y a des questions, n'hésiter surtout pas.
merci et bonne journée.
@+
 

Pièces jointes

  • essai vierge.zip
    26.8 KB · Affichages: 30
  • essai16.zip
    28.2 KB · Affichages: 31
  • fichier csv.zip
    1 004 bytes · Affichages: 26
  • fichier csv.zip
    1 004 bytes · Affichages: 23
  • fichier csv.zip
    1 004 bytes · Affichages: 29

Catrice

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

Bonsoir,

Dans les modules il faut remplacer les "O" par des "X" dans les formules de Module1 et dans Worksheet_BeforeDoubleClick.
Faire rechercher "O" dans le projet en cours pour etre sûr.

Pour l'alignement des resultats de la colonne P il faut changer :
With MaZone.Offset(0, 7).Resize(, 8)
en
With MaZone.Offset(0, 7).Resize(, 9)


Pour la nouvelle ligne, il faut rajouter à la fin de la macro "Formatage" avant le End Sub :

With MaZone.Offset(MaZone.Rows.Count, 1).Resize(1, 1)
.EntireRow.Insert
.Offset(-1, 14).Borders(xlEdgeRight).LineStyle = xlNone
.Value = "Nbr de références :"
.Offset(0, 10).Value = "Total (en heure) :"
.Resize(1, 15).Font.Size = 20
.Resize(1, 15).Font.Bold = True
.Font.Name = "Arial"
.Resize(1, 2).Borders.Weight = xlThick
.Offset(0, 10).Resize(1, 4).Borders.Weight = xlThick
End With

Mais c'est encore un patch ...
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 329
Messages
2 087 335
Membres
103 520
dernier inscrit
Azise