Importer ma balance avec un code VBA Excel

Bonjour chers tous,

en fait j'ai un problème, je voudrait importer une balance excel à partir d'un autre classeur excel avec l'aide d'un code VBA. En fait je ne maîtrise pas encore VBA excel mais je me forme petit à petit mais seulement voilà avec mon projet j'ai pas encore le niveau pour le faire tout seul. Je veux monter des états financiers à partir d'une balance (bon c un langage comptable ), il ne me reste plus qu'à importer ma balance et le reste se fera automatiquement et cet import m'éviterai de faire du copier-coller.

je joins ici un modèle de balance en excel que je veux importer et aussi le classeur où je voudrai importer cette balance.

Merci d'avance

Bonjour,

Sub ImportBalance()
    Dim Bal
    Bal = Workbooks("BLCE TEST for VBA.xls").Worksheets("Sage") _
     .Range("A1").CurrentRegion.Value
    ActiveSheet.Range("A5").Resize(UBound(Bal, 1), UBound(Bal, 2)).Value = Bal
End Sub

Un peu sommaire mais tu n'as pas donné beaucoup de détail sur la façon dont se réitèrerait l'opération...

Ce code suppose que les 2 classeurs soient ouverts et que la balance soit explicitement répertoriée dans la macro... Une procédure réutilisable doit bien sûr s'affranchir de ces contraintes.

Pour voir la simplicité de la méthode, tu cliques sur le bouton que j'ai ajouté (les deux classeurs ouverts, sinon erreur, je n'ai pas placé de gestion d'erreur).

Tu pourras donc te dispenser de copier-coller et ça tombe bien car VBA peut s'en dispenser aussi ! Il fait ça sans copier coller...

Cordialement.

Bien reçu MFERRAD et merci pour ta réponse. Mais voilà mon problème est à moitié résolu puisque je voudrais aller chercher le dossier à importer à partir de mon disque dur ou à partir de "mes documents" au lieu que le fichier soit ouvert!!!

pour être plus précis ,en cliquant sur le bouton "importer" , le menu ouvrir documents s'affiche et à partir de là je peux aller chercher ma balance à importer.

Ensuite je veux qu'a chaque fois que je veux charger une nouvelle balance en cliquant sur le bouton "importer" que les données qui y sont déjà s'effacent automatiquement.

Merci d'avance!

Tu l'aurais indiqué au départ, cela aurait pu être fait plus tôt...

Sub ImportBalance()
    Dim Bal, fichBal
    fichBal = Application.GetOpenFilename("Excel Files (*.xls*),*.xls*")
    If fichBal = False Then Exit Sub
    Application.ScreenUpdating = False
    With Workbooks.Open(fichBal)
        Bal = .Worksheets(1).Range("A1").CurrentRegion.Value
        .Close False
    End With
    ActiveSheet.Range("A5").Resize(UBound(Bal, 1), UBound(Bal, 2)).Value = Bal
End Sub

Ensuite je veux qu'a chaque fois que je veux charger une nouvelle balance en cliquant sur le bouton "importer" que les données qui y sont déjà s'effacent automatiquement.

Faut vraiment que je maîtrise VBA.......Merci du coup de main MFERRAND.....j'apprecie beaucoup!

Juste une dernière chose, je voudrais que la balance importée respecte la mise en forme source càd "police-taille-formatcellule etc.

Ahah !

Sub ImportBalance()
    Dim Bal, fichBal
    fichBal = Application.GetOpenFilename("Excel Files (*.xls*),*.xls*")
    If fichBal = False Then Exit Sub
    Application.ScreenUpdating = False
    With Workbooks.Open(fichBal)
        Bal = .Worksheets(1).Range("A1").CurrentRegion.Value
        .Close False
    End With
    With ActiveSheet
        .Range("A3").CurrentRegion.Offset(2).ClearContents
        .Range("A5").Resize(UBound(Bal, 1), UBound(Bal, 2)).Value = Bal
    End With
End Sub

NB- la ligne 2 doit rester vide...

MFERRAND vous êtes Formidable....... !!! ça marche. merci.

bon juste une question pourquoi la ligne 2 doit rester vide??? Est ce que je peux insérer une ligne entre la ligne 2 et ligne 3???

Regarde cette ligne :

        .Range("A3").CurrentRegion.Offset(2).ClearContents

On efface la "région courante" définie à partir de A3 en la décalant de 2 lignes vers le bas, on efface donc à partir de la ligne 5.

Si tu mets quelque chose ligne 2 (sauf à l'éloigner de ton tableau vers la droite), la "région courante" va s'étendre à la ligne 2 et comme il y a une mention en A1, elle s'étendra à la 1. Pour effacer à partir de la 5 il faudra donc alors décaler de 4 lignes...

Donc, si tu veux mettre quelque chose en ligne 2, en même temps tu remplaces Offset(2) par Offset(4), sans quoi ton en-tête sera effacée.

Cordialement.

Merci encore une fois!!! toutes mes excuses je suis très nul en VBA comme je vous l'ai dit avant. mais je suis vraiment content de rejoindre ce forum.

A bientôt!!!

Bien cordialement

Rechercher des sujets similaires à "importer balance code vba"