Modification routine

Bonjour à tous le forum,

J'aurais une petite aide à vous demander, j'ai une routine me permettant d'ouvrir deux fichier, le premier est selectionné par l'utilisateur, et le second que le nom ressemble au premier sauf la premiere lettre, est ouvert automatiquement.

La seul condition est que ces deux fichiers se trouvent dans le même dossier.

Seulement je me suis rendu compte que les fichiers ne se trouvent pas obligatoirement dans le même dossier, donc ce qui fait planter mon programme et me pose un gros problème.

Donc je voudrais savoir si sa serai possible de m'aider à modifier mon code de façon a pouvoir faire cela ...

Sub Récup_données()
'Declaration des variables
Dim strCsv As String, strTemp() As String
Dim wb As Workbook, wbTemp As Workbook, shG As Worksheet, shR As Worksheet, shTemp As Worksheet
Dim I As Integer
Dim NomFich As String
On Error Resume Next
'Désactivation du rafraichissement d'écran
Application.ScreenUpdating = False
'Attribution des object feuilles "GOOD" et "REJECT" ainsi que du classeur
Set wb = ThisWorkbook
Set shG = wb.Sheets("GOOD")
Set shR = wb.Sheets("REJECT")
MsgBox "Selection du fichier GOOD"
'sélection du fichier "GOOD"
strCsv = Application.GetOpenFilename("All Files ,*.*", , "Sélectionner le fichier des pièces GOOD à ouvrir")
'Sortir de la procédure si "Annuler"
If strCsv = "False" Then Exit Sub
'Vider les feuilles "GOOD" et "REJECT"
shG.Cells.Delete
shR.Cells.Delete
'Ouvrir fichier "GOOD"
Workbooks.OpenText strCsv, xlWindows, 1, xlDelimited, , , True, , , , , , , , "."
'Copier contenu dans feuille "GOOD"
ActiveSheet.Cells.Copy shG.Cells(1, 1)
'Fermeture du fichier
ActiveWorkbook.Close False
'Calculer le nom du fichier "REJECT"
'On admet qu'il se trouve sous le même répertoire
strTemp = Split(strCsv, "\")
'
NomFich = strTemp(UBound(strTemp))
'
I = UBound(strTemp)
strTemp(I) = "R" & Right(strTemp(I), Len(strTemp(I)) - 1)

strCsv = strTemp(0)
For j = 1 To I
    strCsv = strCsv & "\" & strTemp(j)
Next j

'Ouvrir et copier fichier "REJECT" 
Workbooks.OpenText strCsv, xlWindows, 1, xlDelimited, , , True, , , , , , , , "."

ActiveSheet.Cells.Copy shR.Cells(1, 1)
ActiveWorkbook.Close False

Application.ScreenUpdating = True
Range("C5").Select
    Selection.FormulaArray = "=COUNT(GOOD!C[-2])"
    Range("C6").Select
    Selection.FormulaArray = "=COUNT(REJECT!C[-2])"

On Error GoTo 0
strCsv = Range("B3").Value
End Sub

Voila tout est en place, en vous remerciant beaucoup.

Amicalement.

bonjour à tous,

Pourquoi ne regroupe-tu pas ces 2 feuilles dans le même fichier ?

avant de lancer l'analyse.

Ou faire un fichier commun à 2 utilisateurs.

idée à creuser !

Claude.

Bonjour à toi,

J'ai deja essayer de faire faire cette modification pour que ne pas a avoir à modifier mon code, mais on m'a bien fait comprendre que cela ne pourrais pas se faire et que sa serais à moi de me débrouiller.

Donc j'avoue que sa m'embête un peu ...

Par contre qu'entend tu par faire un fichier commun à 2 utilisateurs ?

Amicalement.

re,

Je n'ai jamais utilisé, mais çà s'appelle un fichier "partagé" je crois !

Chaque utilisateur a sa propre protection (si nécessaire)

- Je ne peux t'en dire plus, mais tu peux ouvrir un "post" pour çà. "Document partagé"

Cela simplifierait ton problème.

Claude.

re,

Ok ben je vais faire un post sur ce sujet sinon ben je verrai pour continuer mes recherches. ^^

Merci bien.

Amicalement

hop,

Un classeur partagé permet à plusieurs personnes de le modifier en même temps. Cela est particulièrement utile pour la gestion des listes (liste : ensemble de lignes contenant des données similaires ou une série de lignes que vous définissez de sorte qu'elles fonctionnent comme une feuille de données à l'aide de la commande Créer une liste.) fréquemment mises à jour.

et aussi utile pour d'autres tâches.

est-ce ce que tu cherches ?

mais à quoi servent les 2 fichiers (j'ai du mal à suivre le code VBA) ?

re,

J'ai un peu du mal a saisir ...

Je vais expliquer tout en détail.

Mon programme fonctionne comme suit:

Dans mon classeur, il y a 5 feuilles. les deux premières sont les feuilles GOOD et REJECT.

Les deux suivantes, sont STAT_GOOD et STAT_REJECT.

La dernière et BDD.

Dans ma feuille STAT_GOOD, j'ai deux boutons, un qui me permet d'ouvrir les deux fichier GOOD et REJECT et l'autre qui me permet de faire les calculs prévu avec les feuilles GOOD et REJECT.

Les fichiers GOOD et REJECT sont donc deux fichiers différents qui nous présentent des données inscrites par une ligne de production. Je ne peut absolument pas intervenir sur cette ligne de production pour faire une modification quelconque.

Ces fichiers portent le nom par exemple de G20080508 pour le fichier GOOD et R20080508 pour le fichier REJECT.

Pour que ma routine que j'ai décrite dans mon post précédent fonctionne, il faut que les deux fichiers se trouvent dans le même dossier.

Cela permet à la routine d'ouvrir le fichier REJECT qui correspond au fichier GOOD ouvert par l'utilisateur.

Malheuresement ces deux fichiers ne sont pas dans le même dossier dans la réalité.

Donc c'est pour cela que je suis un peu coincé et que je voudrais modifier ma routine pour que sa puisse ouvrir le fichier REJECT correspondant au fichier GOOD n'importe ou qu'il se trouve.

Voila j'espere que mon explication sera la plus clair possible, sinon je reste bien évidement à disposition pour d'éventuel précision.

Amicalement.

re,

suggestion :

pourquoi ne pa sutiliser menu Données Importer avec une connection ?

(2 classeurs dans lesquels tes collègues écrivent ne contenant rien d'autre que les données, et ton classeur connecté dessus (une feuille par connexion) qui fait les traitements)

pas de VBA.

si les classeurs de données ont changé de place, Excel met une alerte, il te suffit alors de reconnecter en 2 secondes avec la boîte de dialogue qui s'est ouverte.

re,

Ben je suis asser ouvert à toute les propositions ^^

Juste parceque je ne connais pas bien cette procédure, tu pourrais me donner un petit exemple de manipulation stp ?

Amicalement .

re,

1 classeur CA, ayant une feuille FA contenant les données (ne pas laisser de colonneA ni de ligne1 vides)

ton classeur CCC contenant une feuille FCC

dans FCC, clic, menu données données externes importer, naviguer pour trouver CA, choisir la feuille FA, valider.

à chaque ouverture de CCC, il y a actualisation des données.

si tu cliques droit sur FCC, tu as des options (dont fréquence d'actualistation)

tu peux à tout moment demander l'actualistation (clic droit)

fais un test

bonjour jmd,

merci pour jackall, et moi-même de prendre le relais.

- il se fait que les 2 feuilles en question (à récupérer) sont déjà en format texte. 3 Ko chacune. 50 lignes sur 15 colonnes environ. Si çà peut t'orienter.

- j'ai essayé un test, mais j'obtiens une entrée en "cybylliques"

je vais ré-essayé avec les vraies feuilles, et je crois qu'il y a là une ouverture !

amicalement

Claude.

re à vous,

en partant de fichiers textes, je ne sais pas si la connexion fonctionne aussi facilement (il est possible de se connecter à divers types de données, mais c'est moins simple qu'avec une table Excel)

bonne change et bons essais

re, Jmd,

En fait , c'est le fichier qui est enregistré en format texte, mais les cellules sont standard.

-J'ai essayé la manip, je récupère bien le fichier, mais les données sont en texte.

Il y a peut-être une option pour récupérer du numérique ?

Voici le fichier que l'on doit récupérer.

https://www.excel-pratique.com/~files/doc/nmG7VG20080508.08.xls

il fait 3 Ko,

cela t'oriente t-il ?

merci pour ton aide

Claude.

Bonsoir, Claude

Serait-il possible d'avoir également le fichier Texte (.txt, ou .csv)?

0donnees.xlsx (12.18 Ko)

re,

avec https://www.excel-pratique.com/~files/doc/nmG7VG20080508.08.xls

que j'ai enregistré au format txt :

la connexion fonctionne, les données sont en chiffres . J'ai modifié dans une des fenêtres d'option lors de l'import : cocher délimiteur décimal . point au lieude virgule. Car le fichier txt est avec des points.

re,

salut felix,

Bon, la j'ai réussi à récupérer le fichier, c'est Ok

Maintenant, reste à voir pour la macro à adapter.là je coince un peu !

Sachant qu'il y a 2 fichiers à récupérer (venant de 2 sites différents)

-J'espère ne pas trop déformer les besoins de notre ami jackall !

à suivre

Claude.

re,

problème :

Sub Macro5()

strCsv = Application.GetOpenFilename("All Files ,*.*", , "Sélectionner le fichier des pièces GOOD à ouvrir")

Sheets("GOOD").Activate
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\excel2008\Forum\jackall\nmG7VG20080508.08.xls", Destination:=Range("A1"))

     'With ActiveSheet.QueryTables.Add(Connection:="TEXT;strCsv", Destination:=Range("A1"))' NE MARCHE PAS
        .Refresh BackgroundQuery:=False
    End With
End Sub

Le 1er With fonctionne, (avec le chemin complet), mais quand je remplace le chemin par

strCsv, çà ne marche plus et pourtant le strCsv donne bien le chemin complet !

ou est la faute de syntaxe ?

amicalement

Claude.

Bonjour,

Tout dabord, merci a vous tous pour votre précieuse aide.

Ensuite je voulais dire que je ne comprend pas vraiment comment utiliser cette méthode,

si je comprend bien il faudrait que ce soit toujours le même fichier qui soit toujours ouvert si on utilise l'importation de donnée ... est ce que je me trompe ?

Je suis un peu perdu ^^ excusez moi ...

Mais je rajouterais juste que il y a beaucoup de fichier GOOD et REJECT, et qu'ils peuvent avoir pour les fichiers GOOD plus de 15000 lignes dans le tableau excel.

J'espère ne pas me tromper et que je ne me rend pas ridicule XD.

En tout cas je vous remerci vraiment pour votre aide .

Amicalement.

re à vous,

les fichiers txt n'ont pas besoin d'être ouverts pour la connexion fonctionne.

la connexion, une fois créée sur trumuche.txt est automatique sur le fichier trumuche.txt

mais avec le menu, on peut modifier le fichier connecté.

par contre, il faut expliquer un peu plus l'organisation des tes fichiers (qui écirt quoi, où quand etc)

et je sens poindre de la très grosse gestion de données (auquel cas, personnellement, je déconseille Excel, plutôt Access, Approach, Windev etc. voir à ce sujet la comparaison Excel/Access sur le site de Microsoft)

re,

Mes fichiers que je doit ouvrir pour les exploiter, viennent d'une ligne de production, cette ligne de production test en fait des valves. Les données des tests sont enregistrées donc dans une feuille excel. Il y a deux types de données, les données des tests qui sont positif et les données des tests qui sont négatif. Les données positives (GOOD) sont enregistré dans une feuille et les données négatives (REJECT) dans une autre. Dans une journée il y a au minimum 1feuille de chaque qui à été créé.

Chaque jour une nouvelle feuille se créer avec toutes les données des tests.

Je ne peut en aucun cas toucher au programme qui gère ces tests, je suis obligé d'adapter mon propre programme.

Amicalement.

Rechercher des sujets similaires à "modification routine"