Modifier formule excel 2003 par des bases en VBA

Résolu
vincenttinet Messages postés 10 Date d'inscription mercredi 18 août 2010 Statut Membre Dernière intervention 16 février 2011 - 1 févr. 2011 à 23:36
vincenttinet Messages postés 10 Date d'inscription mercredi 18 août 2010 Statut Membre Dernière intervention 16 février 2011 - 2 févr. 2011 à 17:17
bonjour à tous,

Mon fichier est trop volumineux due aux nombreuses formules je dois le réduire

Afin de progresser dans le fichier voici par étapes ce que je voudrais changer.
dans l'exemple en pièces jointes j'ai masqué les onglets qui ne sont pas nécessaires pour l'instant.

Adresse de dépot de fichier
http://www.cijoint.fr/cjlink.php?file=cj201101/cijrrZUp2X.xls

Dans l'onglet (1) chaque produit correspond à une formule pour rechercher la référence correspondant dans le catalogue achat.
en changeant de fournisseurs les produits sont changés automatiquement.

Existe-t-il une formule en VBA qui ferait la même chose.

a+

10 réponses

userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
2 févr. 2011 à 11:27
Hello,
Le plus simple est de boucler sur la plage de cellules contenant tes formules (C17:L865) type RechercheV.
Pour chacune de ces cellule appliquer la formule (différent cas selon la colonne : Select Case)
Et au lieu de garder la formule ne conserver que son resultat (value).
For each cell in range("C17:L865")
select case cell.column
case 3 'colonne C
cell.formulaR1C1="=IF(ISNA(VLOOKUP(R[2]C14,'CATALOGUE ACHAT'!R2C1:R6393C14,4,FALSE)),"""",VLOOKUP(R[2]C14,'CATALOGUE ACHAT'!R2C1:R6393C14,4,FALSE))"
result=cell.value
cell.value=result
...
end select
Next cell

BR
USERRRQI115
Simple user
Great brain
3
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
2 févr. 2011 à 12:59
Re,
Essaie ce code :
Sub RechVonlyResult()

For Each cell In Range("C17:C865")
Select Case cell.Column
Case 3 'colonne C
cell.FormulaR1C1 = "=IF(ISNA(VLOOKUP(RC14,'CATALOGUE ACHAT'!R2C1:R6393C14,4,FALSE)),"""",VLOOKUP(RC14,'CATALOGUE ACHAT'!R2C1:R6393C14,4,FALSE))"
result = cell.Value
cell.Value = result
End Select
Next cell
End Sub

Il te remplacera toutes les formule de la colonne C par la valeur qu'elle renvoie.
A toi de faire la suite soit en dupliquant la boucle pour chaque colonne concernée soit en agrandissant ta plage (C17 : L 865) et en y incorporant un select case pour différencier le traitement de chaque colonne puisque chaque colonne contient une formule qui lui est propre.
BR

USERRRQI115
Simple user
Great brain
3
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
2 févr. 2011 à 14:58
Bonjour

suggestion . Il faut peut etre coller les donnees par valeur pour ne pas ecraser les formules ensuite
3
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
2 févr. 2011 à 16:05
Re

Un jour l'objectif d'alléger excel malgré tous les efforts ne seront t'ils pas vains?

Sous excel : l'import de données par fichier / Ouvrir va écraser les formules

donc choisir une base de données ne serait t'il pas un gain de temps

Access peut servir à faire des formulaires de saisie et les états de sorties même en utilisant une base MySql ou SQL Server

En étant sous excel 2003 on est sur une solution à terme plus maintenue par l'éditeur et les versions suivantes qui gèrent plus de 65535 lignes seront t'elles plus fiables?
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vincenttinet Messages postés 10 Date d'inscription mercredi 18 août 2010 Statut Membre Dernière intervention 16 février 2011
2 févr. 2011 à 11:38
Bonjour,

Merci déjà pour la réponse, je ne suis pas un pro.
Pourais tu me faire un exemple

Adresse de dépot de fichier
http://www.cijoint.fr/cjlink.php?file=cj201101/cijrrZUp2X.xls

Merci a plus
0
vincenttinet Messages postés 10 Date d'inscription mercredi 18 août 2010 Statut Membre Dernière intervention 16 février 2011
2 févr. 2011 à 14:26
Re,

Ok j'ai compri.

Mais il faut que je puisse changer de fournissseur.
Donc plus de formule.
Et j'intégre une mise à jour de catalogue tous les mois.
J'ai besoin de garder les formules.

A+
0
vincenttinet Messages postés 10 Date d'inscription mercredi 18 août 2010 Statut Membre Dernière intervention 16 février 2011
2 févr. 2011 à 15:03
Bonjour Loulou69,

Oui, mais comment.

Attention l'obectif alléger le fichier qui représente 30 MO donc tros gros et plantage.

A+
0
vincenttinet Messages postés 10 Date d'inscription mercredi 18 août 2010 Statut Membre Dernière intervention 16 février 2011
2 févr. 2011 à 16:28
Re,

Je n'ai pas de notion en acces.
Le fichier que j'ai travailler va servir à de nombreuse personne pour passer des commandes
Base de 60 fournisseur avec environ 8000 ref.
Le ficher est mis à jour tous les mois par un catalogue achat

Le fichier de commande actuel en taille origanle fait 30 MO.
Aujoud'hui il tourne en test sur des ordinateures.
Il y a des problémes de plantage sur certain ordinateur.
Je pense que la capacité d'un fichier sur 30 MO est gourmand

Donc trouver une solution pour réduire sa taille.

Maintenant pour info.

Les ordinateures des exploitations non pas ACCES
Excel, Word, Outlook et Powerpoint


A+
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
2 févr. 2011 à 16:57
Si je comprends

Tu cherches avant de tout réorganiser de faire fonctionner la solution actuelle.

Donc trouver une solution paliative qui diminue le nombre de problèmes rencontrées.

Comment réduire la taille : à priori pas de solution en gardant le même volume

Penser à ouvrir un fichier des dernières commandes et non de toutes les commandes.

Est-ce vraiment le fichier fournisseur qui est long à lire.

Peut-être , faut t'il trouver une méthode hors excel d'indexation du fichier des références fournisseurs.
0
vincenttinet Messages postés 10 Date d'inscription mercredi 18 août 2010 Statut Membre Dernière intervention 16 février 2011
2 févr. 2011 à 17:17
Re,

Pour comprendre

j'ai créé un fichier de commandes qui permet d'intégrer le catalogue achats produit et fournisseurs de ma société.
ce fichier sera utilisé par de nombreuses personnes.
le fichier comporte environ une quarantaine onglet.
La vertion mis en ligne est une vertion allerger

Adresse de dépot de fichier
http://www.cijoint.fr/cjlink.php?file=cj201101/cijrrZUp2X.xls

Une trentaine d'onglets sont réservés aux choix de ses fournisseurs, un onglet par fournisseurs.
à la sélection d'un fournisseur le fichier génère automatiquement les produits qui lui sont rattachés.
Pour information une soixantaine de fournisseurs et 8000 références produits.
Le fichier permet, et mis à jour tous les mois du catalogue avec les prix.

Utilisation par l'exploitation

La sélection sur chaque fournisseur la totalité ou pas de ces produits.
L'impression d'un bon de commande, l'inventaire etc. etc.

Le fichier fonctionne très bien, la difficulté rencontrée est la suivante.
Certains ordinateurs ont du mal à digérer la taille du fichier qui représente aujourd'hui 30 MO.


Maintenant pour répondre à tes questions

Oui, touver une solution sur le fichier actuel
La copie de la base de l'ongler '1' dans le fichier en ligne copier 30 fois est gourmand
Trouver un découpage fichier oui mais comment !!!

Voila les problèmes

Trouver une fonction en VBA qui permet de remplacer mes formules en gardant les fonctions du fichier.
voila


A+
0
Rejoignez-nous