Rechercher : dans
Par :

Définition de commande macro

Dernière réponse le 3 jun 2009 à 17:42:23 stephbret56, le 28 mai 2009 à 10:59:57 
 Signaler ce message aux modérateurs

Bonjour,

A partir d'un fichier csv je dois modifier les cellules d'une colonne pour la passer a 10 caractères

Pour cela j'ai écris une macro
Qui modifie les cellules de la colonne pas de problèmes jusque là ça fonctionne.
Puis qui sauvegarde mon document en gardant le format csv avec comme séparateur de champs le point virgule,je dois fermer l'appli excel et la j'ai la question suivante :

============================================================­============
Fichier.csv peut contenir des informations non compatibles avec CSV (séparateur : point virgule).Voulez-vous conserver le format du classeur ?

*Cliquez sur Oui pour conserver le format.Les fonctionnalités non compatibles seront perdues.
*Cliquez sur Non pour conserver ces caractéristiques.Enregistrez ensuite une copie de votre document dans le format de fichier Excel le plus récent.
*Cliquez sur Aide pour vérifier les pertes possibles.

Oui Non Aide
============================================================­============


Comment paramétrer ma macro pour que celle-ci réponde oui implicitement a cette question.

Merci de votre aide.

Configuration: Excel 2003 SP3

Meilleures réponses pour « Définition de commande macro » dans :
Commandes IP relatives aux réseaux sous Windows VoirIl est parfois très utile de connaître les commandes IP, pour analyser voire configurer ses réseaux TCP/IP. Voici la liste de ces commandes à utiliser dans une fenêtre DOS...
Gérer les utilisateurs de XP et Vista grâce aux commandes DOS VoirVoici comment gérer les utilisateurs avec DOS dans XP et Vista. Vous allez me dire, pourquoi passer par DOS si on peut passer par gpedit.msc ? La réponse est simple: gpedit.msc n'est pas dans Vista familial et, dans XP familial, les commandes DOS...
Liste des commandes Windows VoirRemarques : Certaines commandes sont dangereuses (l’exemple de SYSKEY) et peuvent causer des problèmes pouvant conduire au formatage. D’autres commandes ne sont pas exécutables sous Windows XP ou des versions antérieures, je ne les ai pas...
Télécharger Drivers Realtek High Definition Audio pour Vista/7 VoirLe pilote Realtek High Definition Audio pour Windows Vista (et Windows 7) est compatible avec les chipsets audio suivants : Realtek ALC260 Realtek ALC262 Realtek ALC267 Realtek ALC268 Realtek ALC269 Realtek ALC272 Realtek ALC273 ...
Télécharger Drivers Realtek High Definition Audio pour 2000/XP VoirLe pilote Realtek High Definition Audio pour Windows 2000/XP est compatible avec les chipsets audio suivants : Realtek ALC260 Realtek ALC262 Realtek ALC267 Realtek ALC268 Realtek ALC269 Realtek ALC272 Realtek ALC273 Realtek ALC275 Realtek...
Télécharger MOREFUNC (Macro complémentaire EXCEL) VoirMorefunc est une macro complémentaire proposant 67 nouvelles fonctions de feuille de calcul pour Excel. Ces fonctions sont compatibles avec Excel 95 à 2007. Elles ne sont pas portables sur d'autres plate-formes que Windows, ni sur d'autres...
Exécuter une macro VoirExécuter une macro Excel et Calc proposent plusieurs façons d’exécuter une macro : en la sélectionnant dans une liste, dans la boîte de dialogue Macro ; par un raccourci clavier ; en l’attachant à un bouton de la barre d’outils ; ...
Linux - Gestion des utilisateurs VoirPremier pas de l'administrateur Lorsque diverses personnes ont accès à un système, il est nécessaire que l'administrateur système gère les utilisateurs. Pour ceci, les commandes usuelles et les fichiers à configurer doivent être connus. Les...

20

NicoDisso, le 29 mai 2009 à 11:37:13

Ll faut juste cocher "microsoft scripting runtime" dans le menu outils / références dans VBA

ensuite dans un module tu colles tout ce qui est en gras

Option Explicit

Dim Fso As FileSystemObject

'DETAIL DE L'ADRESS
Type Export_csv
Colonne_A As String
Colonne_B As String
Colonne_C As String
Colonne_D As String
Colonne_E As String
Colonne_F As String
Colonne_G As String
Colonne_H As String
Colonne_I As String
Colonne_J As String
End Type

'DETAIL DU FICHIER
Public Detail_Export_csv As Export_csv

'EMPLACEMENT DU FICHIER A CREER
Public Emplacement_Fichier As String

Private Function Ecriture_Entete() As Boolean

Set Fso = New FileSystemObject

Emplacement_Fichier = "C:\Export.csv"

On Error Resume Next
If Fso.FileExists(Emplacement_Fichier) = True Then
Fso.DeleteFile Emplacement_Fichier, True
End If
On Error GoTo 0

Set Fso = Nothing

On Error Resume Next
Open Emplacement_Fichier For Output As #1
Select Case Err.Number
Case Is = 0
Ecriture_Entete = True
Case 71
MsgBox "Le support n'est pas accessible.", vbExclamation, "Message"
Ecriture_Entete = False
Case Else
MsgBox Err.Description, vbExclamation, "Message"
Ecriture_Entete = False
End Select
On Error GoTo 0

End Function

Private Function Ecriture_Detail(Colonne_A As String, Colonne_B As String, Colonne_C As String, Colonne_D As String, Colonne_E As String, Colonne_F As String, Colonne_G As String, Colonne_H As String, Colonne_I As String, Colonne_J As String) As Boolean

Ecriture_Detail = False

Detail_Export_csv.Colonne_A = Colonne_A
Detail_Export_csv.Colonne_B = Colonne_B
Detail_Export_csv.Colonne_C = Colonne_C
Detail_Export_csv.Colonne_D = Colonne_D
Detail_Export_csv.Colonne_E = Colonne_E
Detail_Export_csv.Colonne_F = Colonne_F
Detail_Export_csv.Colonne_G = Colonne_G
Detail_Export_csv.Colonne_H = Colonne_H
Detail_Export_csv.Colonne_I = Colonne_I
Detail_Export_csv.Colonne_J = Colonne_J

On Error Resume Next
Print #1, Detail_Export_csv.Colonne_A & ";" & Detail_Export_csv.Colonne_B & ";" & Detail_Export_csv.Colonne_C & ";" & Detail_Export_csv.Colonne_D & ";" & Detail_Export_csv.Colonne_E & ";" & Detail_Export_csv.Colonne_F & ";" & Detail_Export_csv.Colonne_H & ";" & Detail_Export_csv.Colonne_I & ";" & Detail_Export_csv.Colonne_J
If Err.Number = 0 Then
Ecriture_Detail = True
Else
Ecriture_Detail = False
End If
On Error GoTo 0

End Function

Private Sub Ecriture_Fin()

Close #1

End Sub

Public Sub Export()

Call Ecriture_Entete

Dim Colonne_A As String
Dim Colonne_B As String
Dim Colonne_C As String
Dim Colonne_D As String
Dim Colonne_E As String
Dim Colonne_F As String
Dim Colonne_G As String
Dim Colonne_H As String
Dim Colonne_I As String
Dim Colonne_J As String

Dim I As Integer
Dim J As Integer

I = 1

Do Until ActiveSheet.Cells(I, 1).Value = ""
For J = 1 To 10
Select Case J
Case 1
Colonne_A = ActiveSheet.Cells(I, J).Value
Case 2
Colonne_B = ActiveSheet.Cells(I, J).Value
Case 3
Colonne_C = String(10 - Len(ActiveSheet.Cells(I, J).Value), "0") & ActiveSheet.Cells(I, J).Value
Case 4
Colonne_D = ActiveSheet.Cells(I, J).Value
Case 5
Colonne_E = ActiveSheet.Cells(I, J).Value
Case 6
Colonne_F = ActiveSheet.Cells(I, J).Value
Case 7
Colonne_G = ActiveSheet.Cells(I, J).Value
Case 8
Colonne_H = ActiveSheet.Cells(I, J).Value
Case 9
Colonne_I = ActiveSheet.Cells(I, J).Value
Case 10
Colonne_J = ActiveSheet.Cells(I, J).Value
End Select
Next J

If Ecriture_Detail(Colonne_A, Colonne_B, Colonne_C, Colonne_D, Colonne_E, Colonne_F, Colonne_G, Colonne_H, Colonne_I, Colonne_J) = False Then
Exit Do
End If

I = I + 1
Loop


Call Ecriture_Fin

End Sub


il ne te reste plus qu'a lancer la macro Export et ton fichier sera sur C:\Export.csv avec ta colonne C sur 10 charactères

Répondre à NicoDisso

21

stephbret56, le 29 mai 2009 à 13:58:51

Heu ben la c'est balaise j'comprend pas grand chose à ton script mais le problème n'est pas là j'essaierai de voir plus claire prochainement.

Que dois je faire du contenu de ma macro je conserve ou pas.

Dans ton script tu met un End Sub mais y a pas de Sub je pense que c'est un oublie

Donc dans l'hypothèse que je ne garde pas le contenu de ma macro cela veut dire que je fais un copier coller des lignes en gras à la place de ma macro et que je coche "microsoft scripting runtime"

Puis

j'enregistre ma macro.

Je lance excel j'ouvre mon fichier excel et j'active la nouvelle macro à la fin de la procédure je dois avoir un fichier sous C: qui ce nomme export.csv c'est bien ça?

Répondre à stephbret56

22

stephbret56, le 29 mai 2009 à 14:50:23

Message pour NicoDisso,

Ecoute en insistant un peut je te confirme que ton script fonctionne à merveille.
Par contre j'ai juste a déclarer des colonnes en plus puisque je dois avoir de la colonne A à R je vais essayer de faire la modification de mon coté je te tiens au courant.

Merci beaucoup A+

Répondre à stephbret56

23

NicoDisso, le 29 mai 2009 à 16:16:33

Pour ce qui est du dernier "end sub", il correspond à "Public Sub Export()"

pour ce qui est du reste, tu remplaces effetcivement ta macro par tout le texte en gras et ça roule.

Pour ce qui est des colonnes, effectivement tu en déclares 8 de plus et par contre tu modifies également la boucle des J qui parcoure les colonnes afin qu'elle devienne

Do Until ActiveSheet.Cells(I, 1).Value = ""
For J = 1 To 18
Select Case J
Case 1
Colonne_A = ActiveSheet.Cells(I, J).Value

sinon tu ne va exporter que les 10 premieres colonnes.

Au moins, j'espere que tu comprends ce que cela fait afin que tu puisse réexploiter cela plus tard si besoin...

Au fait, mois je mettrai cette macro dans mon classeru perso avec un bouton personnalisé afin d'avoir juste à cliquer sur le bouton lorsque je veux la mettre en marche depuis le fichier importé...

Répondre à NicoDisso

24

stephbret56, le 29 mai 2009 à 17:41:29

Ok si je comprend bien le passage suivant est une boucle c'est bien ça

Do Until ActiveSheet.Cells(I, 1).Value = ""
For J = 1 To 18
Select Case J
Case 1
Colonne_A = ActiveSheet.Cells(I, J).Value

merci je vais mettre à jour ma macro et je te tiens au courant

A+

Répondre à stephbret56

25

NicoDisso, le 29 mai 2009 à 17:52:12

En fait

Do Until ActiveSheet.Cells(I, 1).Value = "" => jusqu'a ce qu'il trouve un cellule en colonne A qui soit vide
For J = 1 To 10 => boucle pour chaque colonne
Select Case J
Case 1 => suivant la colonne traite le contenu differement
Colonne_A = ActiveSheet.Cells(I, J).Value => mets dan sla variable colonne_A le contenu de la cellule qui correspond à la ligne et à la colonne

du coup comme tu rajoutes des colonnes à exporter, il faut que ta boucle parcoure + de 10 colonnes

Répondre à NicoDisso

26

stephbret56, le 29 mai 2009 à 18:00:43

Super ça marche Nickel je vois un peut plus claire sur le fonctionnement du script.

J'aurai peut-être encore un ptit peut besoin de toi pour la procédure il faut que je l'affine par rapport au besoin je te tiens au courant.

Et encore un grand merci et chapeau pour la technique.

Bonne soirée et bon Week-end

A+

Répondre à stephbret56

27

NicoDisso, le 29 mai 2009 à 18:13:06

De rien,
bon week end à toi aussi, il faudra juste voter pour les messages. Je ne sais pas à quoi ca sert, mais si il y en qui ont besoin d'info, ça peut etre bien..

Répondre à NicoDisso

28

stephbret56, le 3 jun 2009 à 16:16:39

Bonjour NicoDisco,

J'aurai une petite question à propos de l'inputbox

Lorsque l'inputbox s'active il y a ouverture d'une boîte de dialogue qui contient par exemple une question.

Exemple de question:

Indiquez la date du jour au format JJMMAA

Ce champ et récupérer à travers une variable pour divers opérations de la macro.

Ma question :

Dans cette même boîte de dialogue est-il possible de poser 2 questions en sachant que les réponses seront chargées dans deux variables différentes?

Exemple :

La date du jour JJMMAA
et
Le Nom du Fichier

Merci d'avance pour ton aide

Répondre à stephbret56

29

 NicoDisso, le 3 jun 2009 à 17:42:23

Tu peux le faire à condition de dire à l'utilisateur de séparer les données qu'il saisit par un charactere spécial style "|"
du coup avec la fonction split tu generes un tableau dont les données sont séparées par ton charactère.

ex : toto | titi
variable 1 = toto
variable 2 = titi

moi, je prefere faire une userform avec les champs qui vont bien, c'est plus sur car tu peux tester lors de la saisie et autorisé ou non la validation
Le succès, c'est la hauteur à laquelle vous rebondissez quand vous avez touché le fond.

Répondre à NicoDisso
Collection CommentÇaMarche.net