Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 problème macro qui désactive le pavé numérique

epeter

XLDnaute Nouveau
Bonsoir j'ai un problème avec la macro suivante qui désactive le pavé numérique quand elle s'éxécute. Cette macro ouvre un fichier .txt et copie l'ensemble de son contenu dans le presse papier. Quelqu'un pourrait-il m'aider ?

Sub OuvrirASSUAvecBlocNotes()
Dim CheminFichier As String
Dim ClasseurActuel As Workbook
Dim DLU As Integer
CheminFichier = "C:\Users\manep\Downloads\ASSU.txt" ' Remplacez par le chemin de votre fichier

' Vérifiez si le fichier existe
If Dir(CheminFichier) <> "" Then
' Ouvrez le fichier avec le Bloc-notes
Shell "notepad.exe " & CheminFichier, vbNormalFocus
'Application.Wait (Now + TimeValue("00:00:01"))
Application.Wait (Now + 0.000007)

'Envoyez des touches Ctrl+A pour sélectionner tout le texte
Application.SendKeys "^a", True
Application.SendKeys "^c", True
Else
MsgBox "Le fichier n'existe pas.", vbExclamation
End If
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Il est possible en VBA de lire un fichier texte dans un tableau dynamique. Mais bien sûr, pour ne plus avoir à le copier dans le presse-papier, il faudrait savoir où vous le colliez ensuite …
 

Dudu2

XLDnaute Barbatruc
Bonjour,
Ce qui désactive le clavier numérique ce sont les Application.SendKeys.

Si tu es en Office 64 bits, remplace:
VB:
Application.SendKeys "^a", True
Application.SendKeys "^c", True
par:
Code:
CreateObject("wscript.shell").SendKeys "^a"
CreateObject("wscript.shell").SendKeys "^c"

Sinon je te donnerai un code pour rétablir le clavier numérique après des Sendkeys qui le changent.

Edit: Mais c'est sûr que le mieux est de lire le fichier texte directement dans le code VBA.
A tout hasard je joins un fichier texte qui contient du code pour lire et écrire des fichiers texte codés en ANSI ou UTF-8.
 

Pièces jointes

  • VBA Lire et écrire dans un fichier Texte ANSI & UTF-8.txt
    2.2 KB · Affichages: 2
Dernière édition:

epeter

XLDnaute Nouveau
Bonsoir et merci du retour. je souhaite après le coller dans un fichier excel. Hormis la désactivation du pavé numérique, je ne sais pas pourquoi la macro copie les données des 7 premières lignes avec un format de date puis change le format pour les 7 lignes suivantes et rechange après pour les 7 dernières lignes. Voila la macro complète
Sub OuvrirASSUAvecBlocNotes()
Dim CheminFichier As String
Dim ClasseurActuel As Workbook
Dim DLU As Integer
CheminFichier = "C:\Users\manep\Downloads\ASSU.txt" ' Remplacez par le chemin de votre fichier

' Vérifiez si le fichier existe
If Dir(CheminFichier) <> "" Then
' Ouvrez le fichier avec le Bloc-notes
Shell "notepad.exe " & CheminFichier, vbNormalFocus
Application.Wait (Now + 0.000007)

'Envoyez des touches Ctrl+A pour sélectionner tout le texte
Application.SendKeys "^a", True
Application.SendKeys "^c", True


Set ClasseurActuel = ThisWorkbook

' Sélectionnez la feuille "ASSU" du classeur actuel
ClasseurActuel.Sheets("Ex ASSU").Select
DLU = Range("A" & Rows.Count).End(xlUp).Row
DLU = DLU + 1
Application.Wait (Now + 0.000007)
ClasseurActuel.Sheets("Ex ASSU").Range("A" & DLU).Select
ActiveSheet.Paste
Application.Wait (Now + 0.000007)



Else
MsgBox "Le fichier n'existe pas.", vbExclamation
End If
End Sub
 

epeter

XLDnaute Nouveau
Nickel ça marche au top par contre j'ai toujours mon problème de format sur la première colonne de date : le format change dans l'export excel (voir macro complète ci-dessous)
Sub OuvrirASSUAvecBlocNotes()
Dim CheminFichier As String
Dim ClasseurActuel As Workbook
Dim DLU As Integer
CheminFichier = "C:\Users\manep\Downloads\ASSU.txt" ' Remplacez par le chemin de votre fichier

' Vérifiez si le fichier existe
If Dir(CheminFichier) <> "" Then
' Ouvrez le fichier avec le Bloc-notes
Shell "notepad.exe " & CheminFichier, vbNormalFocus
Application.Wait (Now + 0.000007)

'Envoyez des touches Ctrl+A pour sélectionner tout le texte

CreateObject("wscript.shell").SendKeys "^a"
CreateObject("wscript.shell").SendKeys "^c"
'Application.SendKeys "^a", True
'Application.SendKeys "^c", True


Set ClasseurActuel = ThisWorkbook

' Sélectionnez la feuille "ASSU" du classeur actuel
ClasseurActuel.Sheets("Ex ASSU").Select
DLU = Range("A" & Rows.Count).End(xlUp).Row
DLU = DLU + 1
Application.Wait (Now + 0.000007)
ClasseurActuel.Sheets("Ex ASSU").Range("A" & DLU).Select
ActiveSheet.Paste
Application.Wait (Now + 0.000007)



Else
MsgBox "Le fichier n'existe pas.", vbExclamation
End If
End Sub
 

epeter

XLDnaute Nouveau
en détail voila laes formats qu'elle me sort (problème sur la première colonne). j'ai beau changer le format à l'arrivée rien n'y fait
dateouvhautbasclotvoldevise
23/10/2023 00:00
81,69​
81,69​
81,69​
81,69​
0​
EUR
24/10/2023 00:00
82,14​
82,14​
82,14​
82,14​
0​
EUR
25/10/2023 00:00
82,15​
82,15​
82,15​
82,15​
0​
EUR
26/10/2023 00:00
81,78​
81,78​
81,78​
81,78​
0​
EUR
27/10/2023 00:00
81,26​
81,26​
81,26​
81,26​
0​
EUR
30/10/2023 00:00
81,54​
81,54​
81,54​
81,54​
0​
EUR
31/10/2023 00:00
82,3​
82,3​
82,3​
82,3​
0​
EUR
11/02/23​
84,41​
84,41​
84,41​
84,41​
0​
EUR
11/03/23​
84,78​
84,78​
84,78​
84,78​
0​
EUR
11/06/23​
84,39​
84,39​
84,39​
84,39​
0​
EUR
11/07/23​
84,26​
84,26​
84,26​
84,26​
0​
EUR
11/08/23​
84,66​
84,66​
84,66​
84,66​
0​
EUR
11/09/23​
85,64​
85,64​
85,64​
85,64​
0​
EUR
11/10/23​
84,98​
84,98​
84,98​
84,98​
0​
EUR
13/11/2023 00:00
85,62​
85,62​
85,62​
85,62​
0​
EUR
14/11/2023 00:00
87,02​
87,02​
87,02​
87,02​
0​
EUR
15/11/2023 00:00
87,46​
87,46​
87,46​
87,46​
0​
EUR
16/11/2023 00:00
87,1​
87,1​
87,1​
87,1​
0​
EUR
17/11/2023 00:00
87,86​
87,86​
87,86​
87,86​
0​
EUR
20/11/2023 00:00
88,01​
88,01​
88,01​
88,01​
0​
EUR
21/11/2023 00:00
87,71​
87,71​
87,71​
87,71​
0​
EUR
 

Dudu2

XLDnaute Barbatruc
Pour des dates je ne sais pas, sans les données...
Il semble, d'après le cadrage que des dates soient en format texte (cadrées à gauche) et d'autres en format date (cadrées à droite).
J'allais dire ce que @Dranreb vient de publier, c.a.d. de reprendre les dates avec CDate et de formater la colonne avec le format date souhaité.
 

epeter

XLDnaute Nouveau
oui merci. Le passage au format texte ne marche pas. c'est comme si il m'avait mis les dates à partir de la huitième ligne en format Anglo-Saxon : mois/Jour/année ald jour/mois/année. Les dates au format texte devraient se suivre alors que ce n'est pas du tout le cas
 

epeter

XLDnaute Nouveau
Le mieux ce serait probablement d'importer convenablement le fichier texte à l'aide de la commande Fichier texte du groupe Données externes du menu Données.
J'ai essayé de le faire en enregistrant la macro mais elle ne marche pas. Macro ci-dessous. ll me met argument ou appel de procédure incorrect.
Sub Macro3()
'
' Macro3 Macro
'

'
Application.CutCopyMode = False
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Users\manep\Downloads\ASSU.txt", Destination:=Range("$H$2830"))
.CommandType = 0
.Name = "ASSU_6"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With

End Sub
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…