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%)

Absolument, oui. Et tu penses que ta formule ne marchera pas dans ce contexte particulier ?
J'ai créé la Macro que tu as indiquée dans WORD (je suppose que c'est là, et pas dans EXCEL). Mais à partir de là, je ne sais pas comment "procéder" (pour l'exécution), vu que je veux que ça balaye l'ensemble des fichiers WORD contenus dans un même Dossier. Et si je te comprends bien, ta formule ne va pas être capable d'aller changer des données dans un tableau EXCEL "inclus" dans un fichier WORD. Et de surcroît successivement pour les 340 fichiers WORD ?
C'est cela ?
 

didcac

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

Bonsoir à tous,
Personne ne sait comment faire, apparemment ?
Je ne pensais pas que cela serait aussi compliqué à résoudre...
Vous n'avez jamais été amené à "agir" (via une Macro) sur une feuille de calcul EXCEL incluse dans un fichier WORD ?
EXCEL (ou WORD) n'est pas assez puissant pour cela ?
Merci aux nouveaux visiteurs de ce soir de voir si c'est dans leurs cordes...
 

job75

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

Bonjour didcac, le forum,

Non ce n'est pas simple, mais voici une solution de mon cru.

Fermez tous les fichiers et ouvrez l'un de vos 340 fichiers Word.

Dans un module standard placez cette macro :

Code:
Sub ModifierTVA()
Dim chemin$, fich$, wb As Object, d As Document
Application.ScreenUpdating = False
chemin = ThisDocument.Path & "\"
'---ouverture des fichiers Word---
fich = Dir(chemin & "*.doc*") '1er fichier du dossier
While fich <> ""
  If fich <> ThisDocument.Name Then _
    Documents.Open chemin & fich
  If Documents(fich).InlineShapes.Count Then _
    Documents(fich).InlineShapes(1).Activate
  fich = Dir 'fichier suivant
Wend
'---remplacements dans Excel---
For Each wb In GetObject(, "Excel.Application").workbooks
  With wb.sheets(1)
    .[IV65536] = "*1,07" 'évite l'alerte si pas trouvé
    .[A1:U231,IV65536].Replace "~*1,07", "*1,1", 2
    .[IV65536] = "*1.07" 'évite l'alerte si pas trouvé
    .[A1:U231,IV65536].Replace "~*1.07", "*1.1", 2
    .[IV65536] = ""
  End With
Next
'---enregistrement et fermeture des fichiers---
For Each d In Documents
  d.Save
  If d.Name <> ThisDocument.Name Then d.Close
Next
Application.ScreenUpdating = True
End Sub
Elle fonctionne bien sur Office 2003, à voir sur MAC ou autres versions.

Nota : un seul tableau Excel est traité dans chaque fichier.

Il est facile de modifier la macro pour les traiter tous s'il y en a plusieurs.

Fichier joint.

A+
 

Pièces jointes

  • TVA(1).doc
    61 KB · Affichages: 75

job75

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

Re,

Voici le code pour traiter un nombre de tableaux quelconque :

Code:
Sub ModifierTVA()
Dim chemin$, fich$
Application.ScreenUpdating = False
chemin = ThisDocument.Path & "\"
fich = Dir(chemin & "*.doc*") '1er fichier du dossier
While fich <> ""
  If fich <> ThisDocument.Name Then
    Documents.Open chemin & fich
    Remplace Documents(fich)
    Documents(fich).Close True
  End If
  fich = Dir 'fichier suivant
Wend
Remplace ThisDocument
ThisDocument.Save
Application.ScreenUpdating = True
End Sub

Sub Remplace(d As Document)
Dim i%
For i = 1 To d.InlineShapes.Count
  d.InlineShapes(i).Activate
  With GetObject(, "Excel.Application").workbooks(i).sheets(1)
    .[IV65536] = "*1,07" 'évite l'alerte si pas trouvé
    .[A1:U231,IV65536].Replace "~*1,07", "*1,1", 2
    .[IV65536] = "*1.07" 'évite l'alerte si pas trouvé
    .[A1:U231,IV65536].Replace "~*1.07", "*1.1", 2
    .[IV65536] = ""
  End With
Next
End Sub
C'est même mieux en ce qui concerne l'aspect de l'écran !!

Fichier (2).

A+
 

Pièces jointes

  • TVA(2).doc
    79 KB · Affichages: 54
Dernière édition:

job75

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

Re,

Testé sur Office 2010 : bug sur Documents(fich).InlineShapes(1).Activate

Pas le temps d'étudier ça maintenant, il y a peut-être une autre méthode.

A+
 

didcac

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

Bonjour job75,
Et merci beaucoup de continuer à trouver une solution.
J'ai testé ta méthode n°1, et effectivement, j'ai le même problème lorsque je lance l'exécution.
Le message est :
Membre de méthode ou de données introuvable.
Et le surlignement de (seulement) le mot ".Activate", dans la ligne de commande suivante :
Documents(fich).InlineShapes(1).Activate
On semble pourtant pas loin du but...
Quand tu auras le temps, merci de voir si cette commande n'a pas changé avec la version plus récente de Office. Je suppose que Office 2010 PC correspond exactement à ma version MAC 2011.
Encore merci.
 

job75

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

Bonsoir didcac, le forum,

Sur Office 2010 il suffit d'ajouter OLEFormat :

Code:
Documents(fich).InlineShapes(1).OLEFormat.Activate
Code:
d.InlineShapes(i).OLEFormat.Activate
Fichiers joints.

A+
 

Pièces jointes

  • TVA(1).zip
    22.1 KB · Affichages: 36
  • TVA(1).zip
    22.1 KB · Affichages: 35
  • TVA(2).zip
    34.6 KB · Affichages: 42
  • TVA(1).zip
    22.1 KB · Affichages: 36
Dernière édition:

job75

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

Bonjour didcac, le forum,

En fait OLEFormat.Activate fonctionne quelle que soit la version utilisée.

Fichiers (1 bis) et (2 bis).

A+
 

Pièces jointes

  • TVA(2 bis).doc
    79 KB · Affichages: 46
  • TVA(1 bis).doc
    61.5 KB · Affichages: 52

job75

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

Re,

Une solution plus simple et plus générale avec paramétrage des taux :

Code:
t1 = 1.07: t2 = 1.1 'taux
'-----
    .[IV65536] = "*" & t1 'évite l'alerte si pas trouvé
    .[A1:U231,IV65536].Replace "~*" & t1, "*" & t2, 2
    .[IV65536] = ""
Fonctionne quel que soit le séparateur décimal de l'ordinateur.

Fichiers (1 ter) et (2 ter).

A+
 

Pièces jointes

  • TVA(1 ter).doc
    61 KB · Affichages: 82
  • TVA(2 ter).doc
    79.5 KB · Affichages: 53
Dernière édition:

Discussions similaires

A
Réponses
4
Affichages
1 K
jacquesderyes
J

Statistiques des forums

Discussions
312 215
Messages
2 086 322
Membres
103 178
dernier inscrit
BERSEB50