[VBA]Migration des données

bcharef

XLDnaute Accro
Bonjour à toutes et à tous.

Je me trouve devant une difficulté d’automatisation d’une opération de migration d’un système à un autre.

Cette opération nécessite de renseigner un canevas (un ensemble de huit (08) classeurs EXCEL) pour le nouveau système en fonction de l’ancien système.

Voilà, je vous expose la première table du canevas à automatiser.

L’objectif recherché est d’automatiser à partir de l'ancien système en créant un nouveau classeur sous le nom " TJournal" ainsi que la feuille du même classeur doit porter le nom "TJournal" dans un répertoire nommée « Canevas » sur le bureau.

Le fichier ci-joint porte plus d'éclaircissements ainsi que l’objectif recherché.

Comptant sur votre aimable collaboration, veuillez agréer mes salutations distinguées.

BCharef
 

Pièces jointes

  • MigratioTJournal.xls
    17 KB · Affichages: 105
  • MigratioTJournal.xls
    17 KB · Affichages: 105
  • MigratioTJournal.xls
    17 KB · Affichages: 104

Modeste

XLDnaute Barbatruc
Re : [VBA]Migration des données

re³,
Je partage bel et bien vos remarques, mais malheureusement avec un grand M, je suis un ignare en matiére de VBA. Eh bien nous sommes 2, alors :D

Au sujet des tests, il à noter que, j'ai bien testé et que les résultats sont bons.Tant mieux
Et, si, j'ai bien compris comment éviter l'affichage du bouton dans le nouveau classeur TJournal, je serais dans l'obligation d'exécuter la macro à partir du menu outil, mais y a t-il une solution via VBA? On pourrait aussi simplement mettre le bouton dans la feuille "AncienSystème"

Pour notre ami tototiti, je souhaite qu'aucun mal ne le touchera et que dieu le protégera ainsi que vous et l'ensemble de nos ami(e)s. T'inquiète pas: je plaisantais! (il fait sans doute la fête quelque part ;))
Salutations d'ici aussi !
 

bcharef

XLDnaute Accro
Re : [VBA]Migration des données

Re bonsoir tototiti2008 & Modeste,
Re bonsoir à toutes et à tous.

Sincèrement, mettre le bouton dans la feuille "AncienSystème" est une bonne réflexion.

Je pense que vous aviez lu la suite du sujet portant sur le deuxième classeur à automatiser comme indiqué dans le message # 13.

Merci encore une fois pour vos remarques d'une part et de votre aide précieuse d'autre part.

Amicalement.

BCharef
 

Modeste

XLDnaute Barbatruc
Re : [VBA]Migration des données

Bonjour bcharef, le forum, la neige, les oiseaux engourdis et le reste du monde,

Je n'avais pas vu ton message #13, tu as donc bien fait d'insister :eek:
Ceci dit, je propose de te mettre à contribution et, sans t'expliquer dans le détail tout le code, de faire en sorte que tu puisses adapter la macro à ton autre fichier.
- Ouvre les 2 classeurs: MigrationTJournal (V4) et Migration TCompte. La fenêtre d'un des 2 classeurs étant active, appuye sur Alt+F11 (l'Editeur Vba s'affiche)
- à gauche de cette nouvelle fenêtre (dans l'explorateur de projet), repère MigrationTJournal et dans la petite arborescence, le 'Module1' (voir image en pièce jointe)
- Fais simplement un "cliquer-glisser" de ce module, sur le VBAProject MigrationTCompte puis ferme le fichier MigrationTJournal
-Ne reste plus, dans l'Explorateur de projet que le fichier qui t'intéresse (TCompte). Double-clic sur le module1 pour afficher le code dans la partie principale de la fenêtre
- Il faut maintenant repérer les éléments qui doivent être modifiés:
* Ligne 5: Range("CJ") doit devenir Range("NCS")
* Lignes 6 & 7: l'offset (équivalent de DECALER) doit être, non plus d'1 colonne, mais de 2. Remplace donc (3 fois) c.Offset(0, 1) par c.Offset(0, 2)
* Lignes 13 & 16: le nom de la feuille est différent. Remplacer "TJournal", par "TCompte"
* Idem en ligne 23: remplacer en fin de chaîne "TJournal.xls" par "TCompte.xls"
* pour les colonnes à effacer, remplacer, en ligne 19 ".Range("C1:IV1")..." par ".Range("L1:IV1")..."
* pour les lignes je propose d'indiquer '+2' en fin de ligne 20, au lieu de '+1' (voir questions plus bas)

Le code est modifié :)

Si tu le souhaites, tu peux créer un bouton dans la feuille "AncienSystème": dans la feuille elle-même, dans le classeur Excel, menu "Affichage" > "Barres d'outils" > "Formulaires". Dans cette barre d'outils, repérer le "Bouton de commande", l'activer et "tracer un rectangle" dans la feuille. Au moment où tu relâches le bouton de la souris une fenêtre apparaît "Affecter une macro" (si pas, clic droit sur le bouton dans la feuille, puis choisir l'option "Affecter une macro") Dans les 2 cas, la macro (qui se nomme "test" doit apparaître dans la liste). Sélectionne-la et clique sur OK.

Avant d'exécuter la macro, efface les zones de textes et objets dessinés qui figurent éventuellement dans la feuille ... et vois les questions ci-dessous:
- Pas compris ce qu'il fallait faire des formules de la feuille "intermédiaire"
- Pas bien compris non plus pourquoi, en feuille "TCompte", il faut effacer des lignes en fonction du NBVAL+2 dans la plage NCS (qui contient les doublons, donc!?)
- Pas réglé, non plus la question de "toutes les cellules doivent être au format texte" qu'il me semblait avoir lue quelque part

Teste déjà tout ceci ... et dis-nous :rolleyes:
 

Modeste

XLDnaute Barbatruc
Re : [VBA]Migration des données

re,
salut Staple,

Bcharef, si cela t'intéresse , fais le savoir, je reviendra avec plus d'éléments à ce sujet
Ah vouich! Et moi, je pue le mazout ou quoi ?:D Et si moi, j'ai envie que tu "reviendra" (tu ne l'as pas volée, celle-là :)) nous indiquer comment on peut égaiement (et celle-ci tu l'as bien méritée) programmer l'exécution d'un VBScript??
Ceci dit, pas certain que l'automatisation évoquée par bcharef le soit (automatique) à ce point, mais juste pour ma culture, tu veux bien, dis, JM??
 

bcharef

XLDnaute Accro
Re : [VBA]Migration des données

Bonsoir tototiti2008, Modeste & Staple1600
Bonsoir à toutes et à tous.

Avant tout, j'ai le plaisir de vous remercier de votre aide et du temps précieux que m'aviez accordé.

Modeste

Sincèrement, j'ai réalisé le travail conformément aux orientations que vous m'aviez recommandé d'une manière aveugle.

Le test de la macro avec une base de données différentes sur la feuille nommée "AncienSystème" a affiché un résultat portant des insuffisances tel que, les doublons et que les colonnes C, D, E & F à compter de la ligne n° 33 non renseignées comme indiqué dans la feuille TCompteIntermédiare .

... et vois les questions ci-dessous:
- Pas compris ce qu'il fallait faire des formules de la feuille "intermédiaire"," la feuille intermédiaire présente les modalités de réalisation de la feuille TCompte"

- Pas bien compris non plus pourquoi, en feuille "TCompte", il faut effacer des lignes en fonction du NBVAL(NCS)+2 dans la plage NCS (qui contient les doublons, donc!?),"vous avez raison"

- Pas réglé, non plus la question de "toutes les cellules doivent être au format texte" qu'il me semblait avoir lue quelque part, "C'est une des conditions de conversion des anciennes données d'un logiciel à un autre nouveau logiciel"

Teste déjà tout ceci ... et dis-nous :rolleyes:

Merci encore une fois de votre aide précieuse.

Cordialement.

BCharef
 

Pièces jointes

  • MigrationTCompteV(1).zip
    18.9 KB · Affichages: 40
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : [VBA]Migration des données

Bonjour à tous,

Juste pour vous rassurer, je ne suis pas enseveli sous la neige :D
Je suis simplement assez rarement sur le forum le soir....

Je partage bel et bien vos remarques, mais malheureusement avec un grand M, je suis un ignare en matiére de VBA. Eh bien nous sommes 2, alors :D

Elle est bien bonne celle-là
Modeste, malgré ton pseudo, sache que l'utilisation des Dictionnaires en VBA pour enlever les doublons est assez peu souvent réalisée par les ignares en VBA.... ;)
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : [VBA]Migration des données

Bonsoir à tous,

@tototiti: ravi de savoir que tu n'es pas surgelé ni reconverti en bonhomme de neige :D
@bcharef: j'ai peur de ne pas comprendre: dans le fichier précédent, j'avais considéré qu'un doublon existait dès que le CJ et le IJ étaient identiques. Est-ce donc qu'il y a une erreur, dans ce que je t'ai proposé ... ou la règle est-elle différente pour ce fichier-ci ???

Hey Staple :) ça se télescope!
mes fautes de saisies dues au grand froid qui règne ici
Enlève les moufles: pour le clavier, c'est plus facile!
 

bcharef

XLDnaute Accro
Re : [VBA]Migration des données

Re bonsoir tototiti2008, Modeste & Staple1600
Re bonsoir à toutes et à tous.

Staple1600

Tu n 'as pas vu ma question dans mon message précédent ?
Si tu répondais par l'affirmative à celle-ci ca me permettrait de faire plaisir à Modeste,"J'ai vu le message, mais, et, je suis preneur pour toutes suggestions que vous voyez nécessaires"

Modeste

j'ai peur de ne pas comprendre: dans le fichier précédent, j'avais considéré qu'un doublon existait dès que le CJ et le IJ étaient identiques. Est-ce donc qu'il y a une erreur, dans ce que je t'ai proposé ... ou la règle est-elle différente pour ce fichier-ci ????," Il est à signaler, qu'il s'agit de comptes comptables et on ne pourra pas avoir un même compte pour deux libellés différents et la même chose pour les journaux"

Dommage, que je suis un ignare en matiére de VBA, mais, je pourrais relever ce défis par votre expérience d'une part et de vos orientations d'autres part.

Pour information, le travail à automatiser est déjà réalisé par formules, mais mon souhait est d'automatiser le travail classeur par classeur.

Merci encore une fois de votre aide.

Salutations distinguées.

BCharef
 
Dernière édition:

bcharef

XLDnaute Accro
Re : [VBA]Migration des données

Re bonsoir tototiti2008, Modeste & Staple1600
Re bonsoir à toutes et à tous.

EDITION[/B]: Peux-tu, stp, indiquer le chemin de ton fichier source, stp ?
Est-il dans :
"C:\Documents and Settings\ACER\Mes Documents" ?, "C:\Documents and Settings\ACER\Bureau\Migration"
Amicalement.

BCharef
 
Dernière édition:

bcharef

XLDnaute Accro
Re : [VBA]Migration des données

Re bonsoir tototiti2008, Modeste & Staple1600
Re bonsoir à toutes et à tous.

Je vous confirme que:

Le lien du répertoire source est :

C:\Documents and Settings\ACER\Bureau\Migration", portant le fichier MigrationJournal

Et, que :

Le lien du répertoire destination est :

C:\Documents and Settings\ACER\Bureau\CANEVAS", qui doit enregistrer le nouveau sous le nom TJournal

Cordialement.

BCharef
 

Staple1600

XLDnaute Barbatruc
Re : [VBA]Migration des données

Re

Ok Bcharef
Peux tu, stp tester ce script VBS?
Code:
Dim oNk As Object
Dim aXL
Dim wbXL
Dim U_ser As String

Set oNk = CreateObject("WScript.Network")
U_ser = oNk.UserName

Set aXL = CreateObject("Excel.Application")
Set wbXL = aXL.Workbooks.Open("C:\Documents and Settings\" & U_ser & "Desktop\MIGRATION\MigratioTJournal.xls"


Set wbXL = Nothing
Set aXL = Nothing
Tu copies/colles le code ci-dessus dans le bloc-notes, et tu enregistres avec l'extension vbs
Exemple: migration.vbs
Fermes Excel et le fichier MigratioTJournal.xls
Puis double-cliques sur migration.vbs
Que se passe-til ?
PS: il faut que ton Windows soit paraméter pour afficher les extensions des fichiers.
 
Dernière édition:

bcharef

XLDnaute Accro
Re : [VBA]Migration des données

Bonjour tototiti2008, Modeste & Staple1600
Bonjour à toutes et à tous.

Ça, c'est nouveau pour moi.

Tu copies/colles le code ci-dessus dans le bloc-notes,"où se trouve ce bloque note", et tu enregistres avec l'extension vbs
Exemple: migration.vbs
Fermes Excel et le fichier MigratioTJournal.xls
Puis double-cliques sur migration.vbs
Que se passe-til ?
PS: il faut que ton Windows soit paraméter pour afficher les extensions des fichiers,"comment paramétrer".

Salutations distinguées.

BCharef
 

Staple1600

XLDnaute Barbatruc
Re : [VBA]Migration des données

RE


C'est un accessoire fourni par Windows (C'est un éditeur de texte)
Démarrer/Programmes/Accessoires/Bloc-Notes

Pour les extensions de fichier, voir la copie d'écran ci-dessous
affext.jpg
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : [VBA]Migration des données

Bonjour tout le monde,

Pas pu vous suivre hier soir (des visiteurs aussi inattendus que bienvenus ... et un léger mal de crane ce matin :rolleyes:)
Pour faire avancer le "schmilblick" message d'erreur à l'exécution, chez moi: ligne 1, caractère 9, fin d'instruction attendue.
En mettant le 'As Object en commentaire, le début du code ne bloque plus, mais même message pour la ligne 4, caract. 11. Puisque ça marche une première fois, je mets aussi le 'As String en commentaire.
Ajouté un petit MsgBox au milieu pour voir ... Il s'affiche bien ... mais pas le fichier Excel (dont je me suis assuré qu'il existait et dont j'ai renseigné le chemin d'accès ... enfin il me semble!).
Par contre, un processus Excel apparaît dans le gestionnaire des tâches.
 

Staple1600

XLDnaute Barbatruc
Re : [VBA]Migration des données

Bonjour Modeste

Scrogneugneu !! je vais tester plus avant
Pourtant cela devrait fonctionner
Merci d'avoir pris le temps de tester.

Je reposterai un script quand je serai sur qu'il bogue qu'une fois sur deux ;)

EDITION: je viens de tester. Chez moi le classeur est bien ouvert
Code:
Dim oNk, aXL, wbXL, U_ser

Set oNk = CreateObject("WScript.Network")
U_ser = oNk.UserName
MsgBox U_ser

Set aXL = CreateObject("Excel.Application")
aXL.Visible=True
'ATTENTION: Le fichier A.xls doit exister et se trouver dans C:\Temp
Set wbXL = aXL.Workbooks.Open("C:\Temp\A.xls")
Set wbXL = Nothing
Set aXL = Nothing
Ps: je pensais que par défaut le Visible était sur True
Je me trompais . Désolé

charef:

On continue avec le Vbscript ou pas ?
Comme je le dis plus pas: utiliser VBscript est une possibilité pas une nécessité.
(Mais comme je me suis engagé à faire plaisir à Modeste ;) )
Parce que l'étape suivante, c'est de:
Créer le code VBA à la volée
L'importer dans le classeur ouvert par le script
Exécuter le code VBA (toujours par le biais du script VBS)
L'étape finale étant de créer une tâche dans le Task Manager qui exécutera le script VBS selon les paramètres de ton choix.

J'attends ta réponse avant d'aller plus loin.
 
Dernière édition:

Statistiques des forums

Discussions
312 160
Messages
2 085 838
Membres
103 000
dernier inscrit
Nath13