IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

Dim FORMULE as ?


Sujet :

VBA

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Comptable
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Comptable
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Par défaut Dim FORMULE as ?
    Bonjour à tous,

    Cette routine est placée dans un classeur Excel, mais le problème que je vais exposé, n'étant pas propre à ce tableur, je le poste ici.
    Il est question de pilotage Word, mais idem, le problème n'étant pas spécifique à ce traitement de texte ... je le poste ici.

    Le code ci-dessous sert à personnaliser un document modèle Word, en y remplacant des mots clés par des valeurs définies sur Excel, sur la feuille nommée Variables ; les mots clés étant les noms des cellules Excel qui abritent la valeur.
    Il fait appel à une autre routine qui n'a pas besoin d'être détaillée et dont voici les arguments :
    Sub ChercheEtRemplace (Objet, Texte à remplacer, A remplacer par)

    C'est en résumé un publipostage qui m'offre des possibilités plus approfondies.

    Le code en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Sub DocsSTC()
     
    Dim appliWord As Word.Application
        Set appliWord = New Word.Application
     
    Dim DocumentSTC As Word.Document
        Set DocumentSTC = appliWord.Documents.Open(ThisWorkbook.Path & "\" & Variables.Range("Modele_STC"), ReadOnly:=True)
     
     
    Dim i As Integer
        i = 1
        While Not (Variables.Cells(i, 1) = Empty)
        On Error Resume Next
        i = i + 1 
        Call ChercheEtRemplace(appliWord, Variables.Cells(i, 2).Name.Name, Variables.Cells(i, 2))
        Wend
     
    appliWord.Visible = True
     
    Set DocumentSTC = Empty
    Set appliWord = Empty
     
    End Sub
    Afin d'optimiser la macro-commande et de générer à la volée plusieurs documents je souhaitais "boucler" sur la déclaration et l'ouverture des modèles Word, qui peuvent contenir les mêmes mots clés, et dont le nombre est variable selon les situations concrètes, mais au cas par cas, pour lesquelles ce développement est mis au point.

    L'idée est la suivante, la première formule se trouvant en gras, n'étant pas une syntaxe c- Oo -recte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim NumDoc As Integer
        For NumDoc = 1 To Variables.Range("Modele_Nombre")
            Dim [DocumentSTC & NumDoc] As Word.Document
                Set [DocumentSTC & NumDoc] = appliWord.Documents.Open(ThisWorkbook.Path & "\" & Variables.Range("Modele_STC" & NumDoc), ReadOnly:=True)
        Next NumDoc
    En adaptant ensuite ChercheEtRemplace, cette stratégie aurait de nombreux avantages pour moi mais aussi, et surtout pour mes collègues, pour qui, malheureusement, Excel n'est qu'une calculatrice. Rien de plus que : +/- ; somme() ; et de jolis tableaux.

    Existe-il une façon de suivre cette idée, s'il vous plait ?

    Etant comptable, j'avoue être preneur d'une solution, clé en mains, car je manque un peu de temps en cette période.

    Toutefois, je ne suis pas contre des pistes, qu'il me faudra approfondir, si toutefois elles ne demandent pas des connaissances véritablement peu accessibles.

    Je vous remercie par avance.

    Cordialement,

    Steven

  2. #2
    Nouveau candidat au Club
    Profil pro
    Comptable
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Comptable
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Par défaut
    Bonjour,

    Voici la façon dont je traite mon problème, en "attendant".

    Voilà pourquoi, je ne marque pas encore ce post comme étant résolu :

    ce mode opératoire ne permet pas de traiter l'ensemble des documents - nombre indéterminé, au cas pas cas - à la volée au fur et à mesure de la lecture des variables, mais seulement l'un après l'autre, ce qui implique plusieurs lectures de chaque variable et n'est pas adapté à la suite de la macro.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
     
    Sub DocsSTC()
     
    ScreenUpdating = False
     
    Dim appliWord As Word.Application
        Set appliWord = New Word.Application
     
    Dim DocumentEnCours As Word.Document
    Dim Numero As Integer
    Dim i As Integer, Compteur As Integer
        Compteur = 1
    Dim Done As Currency
     
    For Numero = 1 To Variables.Range("Modele_Nombre")
        Set DocumentEnCours = appliWord.Documents.Open(ThisWorkbook.Path & "\Modèles\" & Variables.Range("Modele_STC" & Numero), ReadOnly:=True)
    i = 1
        Progressbar.Show
    DoEvents
    On Error Resume Next
        Do Until Variables.Cells(i, 1) = Empty
    i = i + 1
        Call ChercheEtRemplace(appliWord, Variables.Cells(i, 2).Name.Name, Variables.Cells(i, 2))
        With Progressbar
            .Lbl_ProgressBar = Variables.Range("Modele_STC" & Numero)
            Done = Compteur / (Variables.Range("Modele_Nombre") * WorksheetFunction.CountA(Variables.Range("A:A")))
            .FrameProgress.Caption = Format(Done, "0%")
            .LabelProgress.Width = Done * 0.96 * .FrameProgress.Width
        End With
    Compteur = Compteur + 1
    DoEvents
        Loop
        DocumentEnCours.SaveAs Filename:=ThisWorkbook.Path & "\" & Variables.Range("Document_NomSauvegarde") & Variables.Range("Modele_STC" & Numero)
    Next Numero
     
    appliWord.Visible = True
     
    Set DocumentEnCours = Empty
    Set appliWord = Empty
     
    Unload Progressbar
     
    ScreenUpdating = True
     
    End Sub

Discussions similaires

  1. [Crystal] Formules ...
    Par Antichoc dans le forum Formules
    Réponses: 3
    Dernier message: 25/11/2003, 10h52
  2. évaluateur de formule mathématique
    Par lyrau dans le forum Générateurs de compilateur
    Réponses: 5
    Dernier message: 28/03/2003, 22h50
  3. [VBA-E] Dim dynamique sur un tableau
    Par Vince69 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/12/2002, 13h32
  4. [Formule] Lever et coucher du soleil
    Par psl dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/10/2002, 16h37
  5. [reseaux] Comment creer un compte user à partir d'un formul avec perl
    Par oulai_evado dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 01/10/2002, 19h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo