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,
C'est super d'avoir résolu le problème, mais en lançant la Macro, j'ai eu tout de suite le message d'erreur suivant :
Erreur d'exécution "76"
"Chemin d'accès introuvable".
Qu'en penses-tu ?
Merci.
 

job75

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

Bonjour didcac,

Qu'avez-vous donc fait ?

Avec ThisDocument.Path, le chemin d'accès existe forcément pour tous les fichiers qui se trouvent dans le même répertoire que le fichier qui contient la macro.

Cette macro doit être placée dans un module standard de "Project", et surtout pas de "Normal".

Regardez avec soin les fichiers que j'ai déposés, les avez-vous testés au moins ?

Nota : l'exécution de la macro prend beaucoup de temps : environ 2 secondes par fichier traité sur Office 2010.

A+
 

didcac

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

En effet, au tout début, j'avais bien fait, mais ensuite, une fois la bonne formule trouvée, j'ai refait en prenant cette fois à tort "Normal" et pas "Project". Désolé.
J'ai testé, et le message n'apparaît plus !
Il y a cependant un nouveau message, mais qui est probablement dû au fait que je travaille sur un disque dur externe sur lequel je démarre (appelé "Western Digital 2000Go"), et il y a dans ta formule une référence au disque interne (je crois "\"). C'est ça, non ?
Que dois-je écrire (si ce que je dis est exact, évidemment) ?
Merci.
 

job75

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

Re,

ThisDocument.Path c'est le chemin d'accès, un point c'est tout.

Et "\" c'est le séparateur entre chaque répertoire dans ce chemin, et avant le nom du fichier.

Vérifiez quand même en exécutant ce code :

Code:
Sub a()
MsgBox ThisDocument.Path
End Sub
Vous devez prendre l'une ou l'autre de mes macros, sans la modifier, je ne peux rien vous dire de plus.

A+
 

didcac

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

Oui, c'est bon, ce dernier code renvoie le bon chemin (sur le disque dur externe).
Je précise quand même le (nouveau) message d'erreur évoqué tout à l'heure :
Erreur d'exécution "68"
Périphérique non disponible.
J'avais oublié de le faire dans mon message précédent.
Je viens de lancer tes fichiers et c'est là aussi exactement le même message d'erreur "68"...
 

job75

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

Re,

Que vous dire ?

Si vous avez le message "Périphérique non disponible" c'est qu'il n'est pas disponible...

Essayez en mettant votre dossier de fichiers sur le lecteur C du disque dur.

A+
 

didcac

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

Bonjour job75,
J'ai copié sur mon disque dur interne (mais je n'ai cependant pas booté dessus) les fichiers WORD, mais cela ne change rien.
En revanche, il y a dans la fenêtre d'alerte le fait de demander le Débogage.
Donc, par curiosité, j'ai lancé le Débogage pour voir, et c'est surligné intégralement sur la ligne :
fich = Dir(chemin & "*.doc*") '1er fichier du dossier

Et ce bug est présent tant dans ma Macro que dans la vôtre.
Cela vous éclaire ? C'est là qu'il y aurait un problème ?
Merci beaucoup de votre aide.
 

job75

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

Bonjour didcac,

Cela vous éclaire ? C'est là qu'il y aurait un problème ?

Cette instruction ne peut jamais beuguer sur un fichier Word (ou Excel) normal, quelle que soit la version.

Et cela même quand le chemin d'accès n'existe pas.

Il y a des mystères sur votre MAC (virus ?), je ne peux rien dire de plus.

A+
 

didcac

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

Bonjour job75,
En effet, l'article que vous indiquez parle exactement de mon problème (erreur "68").
J'ai donc fait la mise à jour d'Office MAC mais hélas ce bug n'a pas été corrigé. Ca plante toujours.
Cependant, le rédacteur indique une méthode pour contourner le problème, si j'ai bien compris.
Ne peut-on pas l'intégrer à votre Macro ? Mais je ne sais pas le faire.
Sinon, juste pour voir si je ne me suis pas trompé, je vous joins mon fichier (en fait un des 340 contenus dans un me^me dossier) avec ma Macro. Je peux aussi fort bien avoir fait une erreur.
Et cela vous donnera la possibilité de vérifier si elle marche sur votre Office PC.
Le fichier est ici au format .doc, car je ne peux pas sauver des macros avec le format .docx (sous Mac), et le format .docm n'est pas accepté par ce Forum.
A noter que tous mes 340 fichiers sont en format .docx
Encore merci.
 

Pièces jointes

  • 8Va & DDin1T3.doc
    280.5 KB · Affichages: 54

job75

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

Bonjour didcac,

Pas de problème sur Office 2010, la macro fonctionne bien sur votre fichier.

Mais j'ai pensé à une autre méthode qui devrait fonctionner sur MAC car elle n'utilise pas les fonctions à problème.

Elle consiste à traiter chaque fichier uniquement quand on l'ouvre.

Les fichiers avec la TVA à convertir doivent être tous dans le répertoire Salles.

Et maintenant faites très attention.

Placez cette macro dans le ThisDocument de Normal (surtout pas de "Project") :

Code:
Private Sub Document_Open()
Dim repertoire$, tva1#, tva2#, txt$, t1$, t2$, i%, c As Object
repertoire = "Salles" 'à adapter
tva1 = 0.07: tva2 = 0.1 'taux de TVA, à adapter
txt = "TVA " & 100 * tva2 & " %" '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, ",", ".")
    For i = 1 To ActiveDocument.InlineShapes.Count
      ActiveDocument.InlineShapes(i).OLEFormat.Activate
      With GetObject(, "Excel.Application").workbooks(i)
        For Each c In .sheets(1).[A1:U231]
          If InStr(c.Formula, t1) Then c = Replace(c.Formula, t1, t2)
        Next
      End With
      .Text = txt 'repérage en pied de page
    Next
  End If
End With
End Sub
Elle se lance quand on ouvre n'importe quel fichier WORD mais ne traite le fichier que s'il est dans le répertoire "Salles" et si le nouveau taux de TVA n'est pas encore en pied de page.

A+
 

job75

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

Re,

J'ai vu dans votre fichier qu'il y a des taux de TVA à 19,6 %, il faut les faire passer à 20 %.

La macro complétée :

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").workbooks(i)
        For Each c In .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
A+
 

didcac

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

Oui, exact, il faut aussi traiter le taux de 19,6 %, et c'est très bien de l'avoir vu.
J'ai bien compris, mais je n'arrive hélas pas à créer la Macro en version Normal. Vous dites "placez" dans le ThisDocument du Normal, je le vois bien mais comment "placer", comme vous dites ??
Pour créer une Macro, je vais dans Outils / Macro / Nouvelle Macro, là une fenêtre s'ouvre, il faut la nommer et il y a Enregistrer dans "Mode normal". Je valide. Puis je retourne dans Outils / Macro / Arrêter l'enregistrement. Je retourne dans Outils / Macro / Macros pour voir la liste. Là je sélectionne la macro et fais Modifier. J'efface tout et copie votre macro modèle, et sur la petite fenêtre à gauche, c'est le module "NewMacro" qui est activé (soit en Normal, soit en Project), mais jamais "ThisDocument". A ce stade là, je ne sais pas comment procéder.
Si vous pouvez me renvoyer mon fichier avec cette toute dernière Macro complète, ce serait peut-être plus simple pour que je puisse tester si ça marche. Merci.
 

job75

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

Re,

Il est inutile de déposer un fichier avec une macro dans "Normal", elle n'y restera pas.

Mais vous vous y prenez mal.

Sélectionnez toute la macro de mon post #27 puis clic droit => Copier.

Ouvrez n'importe quel document WORD puis touches Alt+F11 pour aller dans VBA.

En haut à gauche, double-clic sur "Normal" puis sur "Microsoft Word Objets" puis sur "ThisDocument".

Clic droit sur la feuille de code => Coller.

La macro sera désormais là quel que soit le fichier WORD ouvert (même les .docx).

A+
 

job75

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

Re,

Ce qu'il faut bien comprendre c'est que la macro doit être placée dans "ThisDocument" de "Normal" de chaque ordinateur.

Si vous travaillez en réseau il faudra le faire pour chaque poste de travail.

A+
 

Discussions similaires

A
Réponses
4
Affichages
1 K
jacquesderyes
J

Statistiques des forums

Discussions
315 104
Messages
2 116 253
Membres
112 702
dernier inscrit
JRCa91