Remplacement de taux de TVA dans un ensemble de tableaux identiques (7% par 10%)

didcac

XLDnaute Occasionnel
Bonsoir à tous,
Je cherche à créer, mais je ne suis pas très compétent, une Macro me permettant de changer le taux de TVA de 7% en celui de 10%. C'est pour appliquer à un ensemble de 340 tableaux, structurellement parfaitement identiques, et contenus dans un même dossier dénommé "Salles".
L'amplitude d'un tableau est de la cellule A1 à U231 (qu'il faudra donc balayer en totalité). Et il faudra que cette macro génère ce remplacement pour chacune des 340 feuilles de calcul contenues dans le dossier "Salles".
Certaines cellules comportent donc, parfois, la mention de TVA dans une formule, notamment sous la forme suivante : (un chiffre lambda)*1,07 (correspondant à 7% de TVA, et permettant d'obtenir un montant TTC). Donc on peut utiliser la séquence "*1,07" pour la remplacer dans la Macro, je suppose, par "*1,10" (cette fois 10% de TVA).
Exemple concret :
La cellule D21 contient : =215*1,07 (et donc je veux obtenir =215*1,10). Mais il faut tester chaque cellule, car sur une autre feuille de calcul ce sera en D37 qu'il faudra changer quelque chose, par exemple, etc.
Merci d'avance de m'aider de vos lumières.
 

didcac

XLDnaute Occasionnel
Re : Remplacement de taux de TVA dans un ensemble de tableaux identiques (7% par 10%)

Bonjour job75,
Merci pour la méthodologie que je n'avais pas, mais en suivant scrupuleusement la procédure jusqu'au bout, et bien que l'ayant sauvegardé, elle n'est stocké nulle part.
Juste une petite précision : chez moi Alt F11 ne marche pas, car MAC affecte F11 à autre chose. Donc pour aller à VBA, je passe par Outils / Macro/ Virtual Basic Editor. Et là j'ai bien la fenêtre de gauche et peut faire tout ce que vous avez décrit.
Cette macro n'apparaît pas dans Outils / Macro / Macros, qui est sensé montrer dans une fenêtre la liste des macros disponibles. Et c'est vide. Et je ne peux donc pas l'exécuter. C'est étrange. D'autant que si je retourne sur VBE, je la vois de nouveau parfaitement affichée.
Vous comprenez ?
 

didcac

XLDnaute Occasionnel
Re : Remplacement de taux de TVA dans un ensemble de tableaux identiques (7% par 10%)

Je viens de voir à l'instant le post #30.
Je ne suis pas en réseau, mais j'ai plusieurs disques durs externes connecté.
Mais le logiciel Excel ouvert est celui présent sur le disque dur externe sur lequel je boote. Et où sont aussi stockés les fichiers WORD.
 

job75

XLDnaute Barbatruc
Re : Remplacement de taux de TVA dans un ensemble de tableaux identiques (7% par 10%)

Re,

Cette macro n'apparaît pas dans Outils / Macro / Macros, qui est sensé montrer dans une fenêtre la liste des macros disponibles.

C'est normal car c'est une macro événementielle, elle n'apparaît pas dans la liste des macros.

Elle n'est pas faite pour être lancée manuellement, elle se lance automatiquement quand on ouvre un fichier quelconque puisque c'est une macro Open.

Relisez attentivement mon post #26.

A+
 

didcac

XLDnaute Occasionnel
Re : Remplacement de taux de TVA dans un ensemble de tableaux identiques (7% par 10%)

Ah d'accord... je ne connaissais pas ce type de Macro. Mais pour autant, j'ai ouvert un fichier, et cela n'a rien déclenché. En ouvrant le tableau Excel de mon fichier, pour vérifier, les valeurs n'ont pas changé du tout.
Remarque 1 : je vois qu'il y a la commande "Dir" dans la formule, celle qui semble buggée dans Office 11 pour MAC. Ça ne peut pas être une cause ?
Remarque 2 : vous avez énuméré les taux de tva (t1, t2, etc) en indiquant le pourcentage (soit 0,07 pour 7 %). Or, dans mes calcul, vous noterez que moi je saisis directement comme multiplicateur "1,07" dans la cellule (en fait je multiplie par le HT). Le taux "seul" n'est jamais présent. Ça n'est pas ça qui explique le non changement des valeurs ?
Comment expliquez-vous que ça ne marche apparemment pas ? C'est étrange.
 

job75

XLDnaute Barbatruc
Re : Remplacement de taux de TVA dans un ensemble de tableaux identiques (7% par 10%)

Re,

Remarque 1 : je vois qu'il y a la commande "Dir" dans la formule, celle qui semble buggée dans Office 11 pour MAC. Ça ne peut pas être une cause ?

Je ne comprends pas ce que vous faites, cette commande n'existe pas dans les macros des posts #26 et #27.

J'ai dit tout ce qu'il y avait à dire, maintenant il faut vous débrouiller tout seul.

Edit : pour la Remarque 2 mettez vos lunettes, il y a des lignes avec 1 + tva1...

A+
 
Dernière édition:

didcac

XLDnaute Occasionnel
Re : Remplacement de taux de TVA dans un ensemble de tableaux identiques (7% par 10%)

Je vous prie de bien vouloir m'excuser, j'ai en effet lu Dir au lieu de Dim... Voilà.
OK pour "1 + tva1"... Je suis relativement incompétent, vous savez. J'essaie de trouver des pistes pour comprendre pourquoi cela ne fonctionne pas. Car le fait est, quand j'ouvre un fichier Word au hasard, comme vous m'avez dit de le faire, cela ne déclenche rien sur le fichier qui nous intéresse. Le tableau Excel ne change pas de taux de TVA. Or, si j'ai bien compris, la totalité des tableaux (inclus) contenus dans le Dossier "Salles" devrait changer par le simple fait d'avoir ouvert un fichier ?
Comment cela se peut-il que ça ne marche pas ?
 

job75

XLDnaute Barbatruc
Re : Remplacement de taux de TVA dans un ensemble de tableaux identiques (7% par 10%)

Re,

Vérifiez que la macro est bien à l'endroit que j'ai dit.

Ajoutez en 2ème ligne de la macro le code MsgBox "exécute"

Ouvrez un fichier WORD quelconque, s'il n'y a pas de message c'est que Office MAC est complètement foutrac.

A+
 

job75

XLDnaute Barbatruc
Re : Remplacement de taux de TVA dans un ensemble de tableaux identiques (7% par 10%)

Re,

Oui elle est bien placée, maintenant si elle ne fait rien sur les taux de TVA mystère.

Car finalement la macro est extrêmement simple.

A+
 

didcac

XLDnaute Occasionnel
Re : Remplacement de taux de TVA dans un ensemble de tableaux identiques (7% par 10%)

Et si on essayait un test avec une macro encore plus simplifiée, en nommant directement un fichier à traiter (par exemple le nom du fichier que je vous avais joint "8Va & DDin1T3.doc"), et ainsi on verrait si on arrive à agir vraiment sur le tableau Excel inclus (et le modifier). Et si ça marche, cela signifie que c'est la première phase de balayage de l'ensemble des fichiers qui présente un problème. On arrivera ainsi à mieux cerner le problème.
Qu'en pensez-vous ?
 

job75

XLDnaute Barbatruc
Re : Remplacement de taux de TVA dans un ensemble de tableaux identiques (7% par 10%)

Bonjour didcac, le forum,

Curieux que vous n'ayez pas compris que seul le fichier Word ouvert est étudié.

Il doit être dans le répertoire nommé Salles (attention, respectez la majuscule).

Voici une nouvelle macro, si elle fonctionne réactivez les 3 lignes mises en commentaire :

Code:
Private Sub Document_Open()
Dim repertoire$, tva1#, tva2#, tva3#, tva4#, txt$
Dim t1$, t2$, t3$, t4$, i%, c As Object
repertoire = "Salles" 'à adapter
tva1 = 0.07: tva2 = 0.1 'taux de TVA, à adapter
tva3 = 0.196: tva4 = 0.2
txt = "TVA " & 100 * tva2 & " % - " & 100 * tva4 & " %" 'repérage
With ActiveDocument.Sections(1).Footers(1).Range 'pied de page
'  If ActiveDocument.Path Like "*\" & repertoire _
'    And Not .Text Like txt & "*" Then
    t1 = "*" & Replace(1 + tva1, ",", ".")
    t2 = "*" & Replace(1 + tva2, ",", ".")
    t3 = "*" & Replace(1 + tva3, ",", ".")
    t4 = "*" & Replace(1 + tva4, ",", ".")
    For i = 1 To ActiveDocument.InlineShapes.Count
      ActiveDocument.InlineShapes(i).OLEFormat.Activate
      With GetObject(, "Excel.Application")
        If .workbooks.Count > i Then MsgBox "Fermez tout fichier Excel !": End
        For Each c In .workbooks(i).sheets(1).[A1:U231]
          If InStr(c.Formula, t1) Then c = Replace(c.Formula, t1, t2)
          If InStr(c.Formula, t3) Then c = Replace(c.Formula, t3, t4)
        Next
      End With
      .Text = txt 'repérage en pied de page
    Next
'  End If
End With
End Sub
J'ai ajouté un test pour le cas où un fichier Excel serait ouvert quand on ouvre Word.

A+
 

didcac

XLDnaute Occasionnel
Re : Remplacement de taux de TVA dans un ensemble de tableaux identiques (7% par 10%)

Bonjour job75,
Merci pour cette nouvelle Macro.
Dans mon esprit, je pensais que la Macro allait "faire le travail" sans avoir à ouvrir physiquement tous les fichiers Word ni les tableaux Excel inclus.
Donc, il faut aussi qu'aucun autre fichier Excel ne soit ouvert en même temps, ce que j'ignorais. Vous m'aviez juste dit pour Word.
Donc là, avant de commencer, j'ai juste l'application Excel déjà ouverte (sans fichier chargé), et Word déjà ouvert (sans fichier chargé), puis j'ouvre un fichier Word issu du Dossier Salles. Et là, il y a bien ouverture du tableau Excel inclus juste après, mais cela ne marche pas, il y a l'alerte suivante :
Erreur d'exécution "424" :
Objet requis
Et le débogage dit :
If .workbooks.Count > i Then MsgBox "Fermez tout fichier Excel !": End

Et bien sûr aucun calcul n'a été fait.
Sinon, quand vous dites "si elle fonctionne, réactivez les 3 lignes mises en commentaire", où sont-elles ?? Même si pour l'instant la Macro ne marche pas.
 

job75

XLDnaute Barbatruc
Re : Remplacement de taux de TVA dans un ensemble de tableaux identiques (7% par 10%)

Re,

Bah un commentaire dans VBA est simplement précédé d'une quote ' (apostrophe)...

Normalement il est inutile que les applications Word et Excel soient préalablement ouvertes.

Donc fermez tout.

Voyez ce que ça donne en mettant en commentaire la ligne :

Code:
'If .workbooks.Count > i Then MsgBox "Fermez tout fichier Excel !": End
Mais je crains fort que ça ne fonctionne toujours pas...

A+
 

job75

XLDnaute Barbatruc
Re : Remplacement de taux de TVA dans un ensemble de tableaux identiques (7% par 10%)

Re,

Il reste aussi à vérifier les références VBA : dans VBA, menu Outils => Références.

Sur mon Word 2003 est cochée Microsoft Office 11.0 Object Library.

Vérifiez que sur votre MAC Word est cochée une référence comme Microsoft Office xx.x Object Library.

Sinon recherchez-la et cochez-la.

Vous pouvez aussi (éventuellement) cocher Microsoft Excel xx.x Object Library.

A+
 

didcac

XLDnaute Occasionnel
Re : Remplacement de taux de TVA dans un ensemble de tableaux identiques (7% par 10%)

Réponse au #43 :
Ce bug a en effet disparu avec le quote.
Il y a du mieux, puisque ça a complètement marché... hélas une seule fois !!! Je n'arrive plu à le refaire. C'est très bizarre. Mais c'est encourageant.
A noter cependant que le remplacement a bien été fait partout SAUF dans les cellules en bas à droite (Total HT) qui utilise la division par 1,07 et 1,196.
Le document (où ça a marché) était au format .doc, pour info.

J'ai voulu le refaire sur une dizaine de fichiers, et ça ne marche pas.
Sinon, j'ai remarqué divers problèmes selon le fichier que j'ouvre :

Pour le format .docx :
Il y a l'erreur "91"
Variable Objet ou Variable de bloc With non définie
Débogage :
ActiveDocument.InlineShapes(i).OLEFormat.Activate

Pour le format .docm :
erreur "424"
Objet requis
Débogage :
For Each c In .workbooks(i).sheets(1).[A1:U231]

Mais également, il y a aussi :
erreur "5365"
Impossible de modifier Feuille Microsoft Excel
Débogage :
ActiveDocument.InlineShapes(i).OLEFormat.Activate

Cette dernière commande semble impliquée dans plusieurs soucis.
Qu'en pensez-vous ?
 

Discussions similaires

A
Réponses
4
Affichages
1 K
jacquesderyes
J

Statistiques des forums

Discussions
312 380
Messages
2 087 821
Membres
103 665
dernier inscrit
gjoanou