VBA : lier l'ouverture d'un fichier au traitement de ce dernier
Fermé
reders
Messages postés
7
Date d'inscription
mardi 30 octobre 2012
Statut
Membre
Dernière intervention
30 octobre 2012
-
30 oct. 2012 à 10:25
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 - 30 oct. 2012 à 15:20
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 - 30 oct. 2012 à 15:20
A voir également:
- VBA : lier l'ouverture d'un fichier au traitement de ce dernier
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Vba range avec variable ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba dépassement de capacité ✓ - Forum Excel
13 réponses
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
30 oct. 2012 à 10:56
30 oct. 2012 à 10:56
Bonjour,
Un exemple de code
Bonne suite
Un exemple de code
Sub essai() Dim reg1 As Variant Dim Wb As Workbook Dim mtestfic As Variant Dim DernLigne As Long resaisie1: 'Titre fenetre boite a dialogue a adapter reg1 = Application.GetOpenFilename(" classeur microsoft excel (*.xls), *.xls ", 2, "ouverture Fichier", True) Set Wb = Workbooks.Open(Filename:=reg1) Nom_Fichier = Wb.Name If Nom_Fichier = "" Then mtestfic = MsgBox("Vous n'avez pas saisi de nom de fichier cliquez sur OK pour resaisir annuler pour sortir", vbOKCancel) If mtestfic = 2 Then Exit Sub ElseIf mtestfic = 1 Then GoTo resaisie1 End If End If 'Nom de feuille a adapter With Workbooks(Nom_Fichier).Worksheets("feuil1") ' Determine la dernière ligne non vide DernLigne = .Range("c" & Rows.Count).End(xlUp).Row MsgBox "Il y a " & DernLigne - 1 & " ND analogiques propres" End With End Sub
Bonne suite
reders
Messages postés
7
Date d'inscription
mardi 30 octobre 2012
Statut
Membre
Dernière intervention
30 octobre 2012
30 oct. 2012 à 13:01
30 oct. 2012 à 13:01
Merci pour ton aide, mais tu le déclares comment Nom_Fichier?
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
30 oct. 2012 à 13:10
30 oct. 2012 à 13:10
Re,
Dim Nom_Fichier suffira.
Bonne suite
Dim Nom_Fichier suffira.
Bonne suite
reders
Messages postés
7
Date d'inscription
mardi 30 octobre 2012
Statut
Membre
Dernière intervention
30 octobre 2012
30 oct. 2012 à 13:36
30 oct. 2012 à 13:36
ça ne marche pas, message d'erreur :
Erreur d'exécution '9':
L'indice n'appartient pas à la selection.
J'ai un peu recherché, et apparement cela viendrai de l'extension du fichier, pourtant c'est bien un fichier .xls
Erreur d'exécution '9':
L'indice n'appartient pas à la selection.
J'ai un peu recherché, et apparement cela viendrai de l'extension du fichier, pourtant c'est bien un fichier .xls
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
30 oct. 2012 à 13:49
30 oct. 2012 à 13:49
Re,
A quel endroit s'arrete le programme????
A quel endroit s'arrete le programme????
reders
Messages postés
7
Date d'inscription
mardi 30 octobre 2012
Statut
Membre
Dernière intervention
30 octobre 2012
30 oct. 2012 à 14:00
30 oct. 2012 à 14:00
Sub essai()
Dim reg1 As Variant
Dim Wb As Workbook
Dim mtestfic As Variant
Dim DernLigne As Long
Dim Nom_Fichier
resaisie1:
'Titre fenetre boite a dialogue a adapter
reg1 = Application.GetOpenFilename(" classeur microsoft excel (*.xls), *.xls ", 2, "ouverture Fichier", True)
Set Wb = Workbooks.Open(Filename:=reg1)
Nom_Fichier = Wb.Name
If Nom_Fichier = "" Then
mtestfic = MsgBox("Vous n'avez pas saisi de nom de fichier cliquez sur OK pour resaisir annuler pour sortir", vbOKCancel)
If mtestfic = 2 Then
Exit Sub
ElseIf mtestfic = 1 Then
GoTo resaisie1
End If
End If
' Determine la dernière ligne non vide
Dim DernLigne As Long
DernLigne = Range("c" & Rows.Count).End(xlUp).Row
' Conservation des ND ANA propres
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Rows("1:1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=7, Criteria1:="<>*ana*", Operator:=xlAnd
Rows("2:2" & DernLigne).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
ActiveSheet.ShowAllData
Selection.AutoFilter Field:=4, Criteria1:="<>"
Rows("2:2" & DernLigne).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
ActiveSheet.ShowAllData
Selection.AutoFilter Field:=9, Criteria1:="<>"
Rows("2:2" & DernLigne).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
ActiveSheet.ShowAllData
Range("D1").Select
ActiveCell.FormulaR1C1 = "ND (8 chifres)"
Range("C2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.TextToColumns Destination:=Range("C2"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(1, 1)), TrailingMinusNumbers:=True
Columns("C:C").Select
Selection.Delete Shift:=xlToLeft
' Determine la dernière ligne non vide
Dim DernLigneFinal As Long
DernLigneFinal = Range("c" & Rows.Count).End(xlUp).Row
MsgBox "Il y a " & DernLigneFinal-1 & " ND analogiques propres"
' traitement ND pour interrogation fichier d'extraction SEP
Range("D2").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(""01"",RC[-1])"
Selection.AutoFill Destination:=Range("D2:D" & DernLigneFinal)
Range("D2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' traitement ND pour interrogation PEC
Columns("E:E").Select
Selection.Insert Shift:=xlToRight
Range("E1").Select
ActiveCell.FormulaR1C1 = "PEC"
Range("E2").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(""aboin:nd="",RC[-2],"";"")"
Selection.AutoFill Destination:=Range("E2:E" & DernLigneFinal)
Range("E2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
Le reste du programme est finalement que du traitement de texte
Dim reg1 As Variant
Dim Wb As Workbook
Dim mtestfic As Variant
Dim DernLigne As Long
Dim Nom_Fichier
resaisie1:
'Titre fenetre boite a dialogue a adapter
reg1 = Application.GetOpenFilename(" classeur microsoft excel (*.xls), *.xls ", 2, "ouverture Fichier", True)
Set Wb = Workbooks.Open(Filename:=reg1)
Nom_Fichier = Wb.Name
If Nom_Fichier = "" Then
mtestfic = MsgBox("Vous n'avez pas saisi de nom de fichier cliquez sur OK pour resaisir annuler pour sortir", vbOKCancel)
If mtestfic = 2 Then
Exit Sub
ElseIf mtestfic = 1 Then
GoTo resaisie1
End If
End If
' Determine la dernière ligne non vide
Dim DernLigne As Long
DernLigne = Range("c" & Rows.Count).End(xlUp).Row
' Conservation des ND ANA propres
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Rows("1:1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=7, Criteria1:="<>*ana*", Operator:=xlAnd
Rows("2:2" & DernLigne).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
ActiveSheet.ShowAllData
Selection.AutoFilter Field:=4, Criteria1:="<>"
Rows("2:2" & DernLigne).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
ActiveSheet.ShowAllData
Selection.AutoFilter Field:=9, Criteria1:="<>"
Rows("2:2" & DernLigne).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
ActiveSheet.ShowAllData
Range("D1").Select
ActiveCell.FormulaR1C1 = "ND (8 chifres)"
Range("C2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.TextToColumns Destination:=Range("C2"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(1, 1)), TrailingMinusNumbers:=True
Columns("C:C").Select
Selection.Delete Shift:=xlToLeft
' Determine la dernière ligne non vide
Dim DernLigneFinal As Long
DernLigneFinal = Range("c" & Rows.Count).End(xlUp).Row
MsgBox "Il y a " & DernLigneFinal-1 & " ND analogiques propres"
' traitement ND pour interrogation fichier d'extraction SEP
Range("D2").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(""01"",RC[-1])"
Selection.AutoFill Destination:=Range("D2:D" & DernLigneFinal)
Range("D2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' traitement ND pour interrogation PEC
Columns("E:E").Select
Selection.Insert Shift:=xlToRight
Range("E1").Select
ActiveCell.FormulaR1C1 = "PEC"
Range("E2").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(""aboin:nd="",RC[-2],"";"")"
Selection.AutoFill Destination:=Range("E2:E" & DernLigneFinal)
Range("E2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
Le reste du programme est finalement que du traitement de texte
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
30 oct. 2012 à 14:05
30 oct. 2012 à 14:05
Re,
Vous n'avez pas recopie correctement le code, il en manque un morceau.
'Nom de feuille a adapter
With Workbooks(Nom_Fichier).Worksheets("feuil1")
' Determine la dernière ligne non vide
DernLigne = .Range("c" & Rows.Count).End(xlUp).Row
MsgBox "Il y a " & DernLigne - 1 & " ND analogiques propres"
End With
Vous devez mettre tout votre code de traitement du fichier .xls que vous ouvrez entre :
'Nom de feuille a adapter
With Workbooks(Nom_Fichier).Worksheets("feuil1")
et
End With
C'est ce qui permet de vous "connecter" a ce fichier.
A+
Vous n'avez pas recopie correctement le code, il en manque un morceau.
'Nom de feuille a adapter
With Workbooks(Nom_Fichier).Worksheets("feuil1")
' Determine la dernière ligne non vide
DernLigne = .Range("c" & Rows.Count).End(xlUp).Row
MsgBox "Il y a " & DernLigne - 1 & " ND analogiques propres"
End With
Vous devez mettre tout votre code de traitement du fichier .xls que vous ouvrez entre :
'Nom de feuille a adapter
With Workbooks(Nom_Fichier).Worksheets("feuil1")
et
End With
C'est ce qui permet de vous "connecter" a ce fichier.
A+
reders
Messages postés
7
Date d'inscription
mardi 30 octobre 2012
Statut
Membre
Dernière intervention
30 octobre 2012
30 oct. 2012 à 14:13
30 oct. 2012 à 14:13
ah oui, désolé, j'ai fait un mauvais copié collé, mais mon le programme était bien comme vous venez de me le dire, et j'ai toujours la même erreur
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
30 oct. 2012 à 14:27
30 oct. 2012 à 14:27
Re,
Je repete donc la premiere question: a quelle ligne le programme s'arrete quand vous cliquez sur debugage de la boite a erreur???????
A+
Je repete donc la premiere question: a quelle ligne le programme s'arrete quand vous cliquez sur debugage de la boite a erreur???????
A+
reders
Messages postés
7
Date d'inscription
mardi 30 octobre 2012
Statut
Membre
Dernière intervention
30 octobre 2012
30 oct. 2012 à 14:39
30 oct. 2012 à 14:39
c'est à cette ligne ci que le programme s'arrête :
With Workbooks(Nom_Fichier).Worksheets("feuil1")
With Workbooks(Nom_Fichier).Worksheets("feuil1")
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
30 oct. 2012 à 14:50
30 oct. 2012 à 14:50
Re,
'Nom de feuille a adapter
With Workbooks(Nom_Fichier).Worksheets("feuil1")
dans votre fichier, le nom de la feuille est???????
'Nom de feuille a adapter
With Workbooks(Nom_Fichier).Worksheets("feuil1")
dans votre fichier, le nom de la feuille est???????
reders
Messages postés
7
Date d'inscription
mardi 30 octobre 2012
Statut
Membre
Dernière intervention
30 octobre 2012
30 oct. 2012 à 14:55
30 oct. 2012 à 14:55
le nom de la feuille est "Rapport1" dù coup, j'ai remplacé comme ceux ci ;
With Workbooks(Nom_Fichier).Worksheets("Rapport1")
et une autre erreur est apparue à la ligne :
Set Wb = Workbooks.Open(Filename:=reg1)
Erreur d'exécution '1004' :
Erreur définie par l'application ou par l'objet
With Workbooks(Nom_Fichier).Worksheets("Rapport1")
et une autre erreur est apparue à la ligne :
Set Wb = Workbooks.Open(Filename:=reg1)
Erreur d'exécution '1004' :
Erreur définie par l'application ou par l'objet
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
30 oct. 2012 à 15:20
30 oct. 2012 à 15:20
Re,
Si vous cliquez sur Annuler ou la croix de la boite a dialogue, vous avez cette erreur.
modifiez le code comme ci-dessous, c'est un peu capilotracte mais ca marche
resaisie1:
reg1 = Application.GetOpenFilename(" classeur microsoft excel (*.xls), *.xls ", 2, "ouverture Fichier", True)
'Annuler on boucle pour redemander
If reg1 = "Faux" Then GoTo resaisie1:
A+
Si vous cliquez sur Annuler ou la croix de la boite a dialogue, vous avez cette erreur.
modifiez le code comme ci-dessous, c'est un peu capilotracte mais ca marche
resaisie1:
reg1 = Application.GetOpenFilename(" classeur microsoft excel (*.xls), *.xls ", 2, "ouverture Fichier", True)
'Annuler on boucle pour redemander
If reg1 = "Faux" Then GoTo resaisie1:
A+