Question de debutant

Résolu
Signaler
Messages postés
25
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
14 février 2009
-
Messages postés
25
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
14 février 2009
-
je pense être au bon endroit:

Bonjour, je suis en train de faire une macro pour  ouvrir un fichier
texte créé par un onduleur. J'ai fait un bouton qui ouvre le fichier
txt dans un nouveau classeur mais je n'arrive pas a rendre ce classeur
actif: si je sélectionne dans la macro 2 colonnes, ce sont les colonnes
du fichier ou se trouve la macro qui sont sélectionnées...Auriez vous
une idée?

2eme question, quand j'ouvre le fichier txt, est il possible de créer un graphique depuis le fichier ou se trouve la macro?

merci pour vos réponses

14 réponses

Messages postés
159
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
8 janvier 2010
2
nomdufichier = ExtractFileName("pathdetonficheirtexte")

Public Function ExtractFileName(ByVal sFullPath As String) As String
    If InStr(sFullPath, "") = 0 Or Right(sFullPath, 1) = "" Then
        ExtractFileName = ""
        Exit Function
    End If
    ExtractFileName = Mid(sFullPath, InStrRev(sFullPath, "") + 1)
End Function

Bonne continuation
Messages postés
577
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
4
filetoopen est le nom complet de ton fichier texte, par exemple "c:\onduleur.txt".


Par conséquent Windows(fileToOpen).Activate n'est pas bon. Soit tu extrais le nom du fichier avec la fonction extractFileName proposée par Supra3000 ou bien par Workbooks(Workbooks.Count)

Donc, essaie l'une de ces méthodes :


Windows(extactFileName(fileToOpen)).Activate ou Windows(Workbooks(Workbooks.Count)).Activate


Amicalement
Messages postés
159
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
8 janvier 2010
2
1 - Windows("noduclasseur").Activate

2 - Oui tu peux utiliser l'enregistreur de macro pour construire un graphique avec du code. Il ne te reste qu'a l'adapter.

Bonne continuation
Messages postés
577
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
4
- Pour rendre actif le classeur onduleur.xls :

 WorkBooks("onduleur.xls").Activate

- tu peux facilement créer un graphique dont la source de données est dans un autre classeur. Tu dois simplement spécifier le classeur et la feuille dans la syntaxe de la source de données. Par exemple :

[onduleur]Feuil1!A1:A100

Amicalement
Messages postés
577
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
4
Crotte de bique ! Battu de 5 secondes...

C'est pô juste !
Messages postés
25
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
14 février 2009

j'avais bien essayer  WorkBooks("onduleur.xls").Activate mais j'ai une erreur 9 "l'indice n'appartient pas a la selection".
je choisis le fichier txt a ouvrir par "GetOpenFilename" et le nom du fichier ouvert est dans "fileToOpen" (le fichier est different a chaque fois).J'ai essayé "WorkBooks("fileToOpen").Activate "   mais cela ne va pas...
Je ne sais pas si cela est important mais c'est un fichier txt que j'ouvre dans excel avec la fonction "Workbooks.OpenText Filename".

merci pour tout!
Messages postés
577
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
4
J'ai aussi l'erreur 9, par contre c'est ok si on enlève l'extension .xls :
WorkBooks("onduleur").Activate
Messages postés
25
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
14 février 2009

je crois que je n'ai pas compris (en fait j'en suis meme sur!)
j'arrive a ouvrir le fichier txt que je veux via un bouton, ce qui m'ouvre un nouveau classeur mais c'est ce classeur que je n'arrive pas a activer, il prend toujours le fichier qui contient la macro pour selectionner les colonnes (voir  ci dessous)

Private Sub CommandButton1_Click()

fileToOpen = Application _
.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> False Then

Workbooks.OpenText Filename:=fileToOpen, Origin:=xlWindows, _
StartRow:=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1)

Windows(fileToOpen).Activate

    Columns("B:C").Select
    Charts.Add
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Sheets("nouvelle installation_2009_02_1"). _
        Columns("B:C")
    ActiveChart.Location Where:=xlLocationAsObject, Name:= _
        "nouvelle installation_2009_02_1"
    ActiveChart.Legend.Select
    Selection.Delete
    ActiveSheet.Shapes("Graphique 2").ScaleWidth 3.75, msoFalse, _
        msoScaleFromTopLeft
    ActiveSheet.Shapes("Graphique 2").ScaleHeight 1.5, msoFalse, _
        msoScaleFromTopLeft
    Windows("nouvelle installation_2009_02_12_0.xls").ScrollColumn = 1

End If
End Sub
Messages postés
25
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
14 février 2009

je vais paraitre idiot mais je ne sais pas ou mettre la fonction de supra3000: j'ai fait plusieurs essai mais il n'en tient pas compte! je n'ai pas trouvé de site qui explique ou mettre les differentes fonctions, macro etc...
Messages postés
25
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
14 février 2009

a y est j'ai reussi! j'ia fait une erreur dans "extractFileName" j'ai oublié le "r". Merci pour votre aide a tous.
Je continue ma macro et je fais appel a vous des que j'ai un soucis ou je suis bloqué!
Messages postés
25
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
14 février 2009

encore bloqué!

j'ai la variable "fileToOpen" utilisée dans "feuill1" et tout fonctionne mais des que j'utilise "fileToOpen" dans le module 1 il me retourne une valeur vide ! comment faire pour que cette variable soit reconnue dans tous les modules?
Messages postés
25
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
14 février 2009

c'est bon avec un peu de perséverance...je n'avais pas declare ma variable dans la bonne feuille!!!
Messages postés
577
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
4
Hello

Si ça marche, je te suggère de poster le code et faire "réponse acceptée" et éventuellement remercier Supra3000 qui t'a donné l'information principale.

Amicalement
Messages postés
25
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
14 février 2009

un grand merci a Supra3000ainsi qu'a Orohena pour votre aide.

Public maPlage
Public fileToOpen
Sub macro1()
Workbooks("ouverture fichier maxtalk.xls").Activate
If Range("a1") = "test" Then
'Workbooks("*.txt").Activate
Windows(ExtractFileName(fileToOpen)).Activate
  Range("b:d").Select
    Charts.Add
    ActiveChart.ChartType = xlLine
    ActiveChart.Legend.Select
    Selection.Delete
    Workbooks("ouverture fichier maxtalk.xls").Close SaveChanges:=False
   
 Else
 
 Windows(ExtractFileName(fileToOpen)).Activate
 
 'Workbooks("nouvelle installation_2009_02_11_0.txt").Activate
 Range("b:c").Select
    Charts.Add
    ActiveChart.ChartType = xlLine
    ActiveChart.Legend.Select
    Selection.Delete
 'FermerClasseur()
 
Workbooks("ouverture fichier maxtalk.xls").Close SaveChanges:=False
End If
End Sub

Public Function ExtractFileName(ByVal sFullPath As String) As String
    If InStr(sFullPath, "") = 0 Or Right(sFullPath, 1) = "" Then
        ExtractFileName = ""
        Exit Function
    End If
    ExtractFileName = Mid(sFullPath, InStrRev(sFullPath, "") + 1)
End Function

Private Sub CommandButton1_Click()
fileToOpen = Application _
.GetOpenFilename("Text Files (*.txt), *.txt", , "fichier maxtalk")
If fileToOpen <> False Then
Workbooks.OpenText Filename:=fileToOpen, Origin:=xlWindows, _
StartRow:=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1)

Call macro1
End If
End Sub

Private Sub tension_Click()
'insertion d'une condition : si la cas ea cocher checkbox1 est activée => se termine par then
If tension.Value = True Then
Range("a1") = "test"
Else: Range("a1") = ""

'fin du test de condition
End If
End sub