Bonsoir tout le monde,
Pour essayer de résumer la situation de la manière la plus simple possible
:
J'ai un gros fichier, environ 2500 lignes sur une quarantaine de colonnes,
qui est mis à jour de façon quotidienne par un administrateur et sur
lequel je n'ai pas la main. Ce fichier contient, en gros, des numéros en
colonne A et des infos de facturation pour ce numéro pour chaque mois
depuis un an à partir de la colonne B.
Ce fichier :
- bougeant continuellement
- étant gros
- étant protégé,
je l'ai scindé en plusieurs fichiers, comportant chacun une partie du gros
fichier.
Pour que chaque petit fichier comporte à chaque fois les infos mises à
jour du gros fichier, chacune des colonnes à partir de B des petits
fichiers contient :
=RECHERCHEV(numéro,plage de données dans gros fichier, colonne
correspondant au mois, FAUX)
et les mises à jour des petits fichiers se font au lancement après mise à
jour du gros par l'administrateur.
Mon problème :
apparemment cela fait beaucoup de grosses formules RECHERCHEV et le PC ne
suit pas, j'ai le message "Mémoire insuffisante" à chaque MAJ et Excel
n'arrive pas à mettre à jour toutes les lignes. J'ai pourtant un PC récent
et 512 Mo de RAM, je pensais que ce serait suffisant.
Je cherche donc à optimiser mes mises à jour pour diminuer l'utilisation
des ressources.
J'aimerais bien écrire en VBA une macro qui me ferait l'équivalent de
RECHERCHEV pour chacune de mes cellules, puis qui me copierait/collerait
la valeur au lieu de conserver la formule. La macro serait donc à lancer
une fois après chaque mise à jour du gros fichier.
1) est-ce que vous pensez que ça améliorerait la situation, ou il faut que
je cherche ailleurs ?
2) comment puis-je faire une telle macro, je débute en VBA : je ne connais
pas l'équivalent de la fonction RECHERCHEV, ni comment lui indiquer dans
quelles cellules faire les opérations, etc...
Quelqu'un a une idée ? Merci d'avance pour votre aide, j'ai été long :-)
A+
Gillou
Bonsoir tout le monde,
Pour essayer de résumer la situation de la manière la plus simple possible
:
J'ai un gros fichier, environ 2500 lignes sur une quarantaine de colonnes,
qui est mis à jour de façon quotidienne par un administrateur et sur
lequel je n'ai pas la main. Ce fichier contient, en gros, des numéros en
colonne A et des infos de facturation pour ce numéro pour chaque mois
depuis un an à partir de la colonne B.
Ce fichier :
- bougeant continuellement
- étant gros
- étant protégé,
je l'ai scindé en plusieurs fichiers, comportant chacun une partie du gros
fichier.
Pour que chaque petit fichier comporte à chaque fois les infos mises à
jour du gros fichier, chacune des colonnes à partir de B des petits
fichiers contient :
=RECHERCHEV(numéro,plage de données dans gros fichier, colonne
correspondant au mois, FAUX)
et les mises à jour des petits fichiers se font au lancement après mise à
jour du gros par l'administrateur.
Mon problème :
apparemment cela fait beaucoup de grosses formules RECHERCHEV et le PC ne
suit pas, j'ai le message "Mémoire insuffisante" à chaque MAJ et Excel
n'arrive pas à mettre à jour toutes les lignes. J'ai pourtant un PC récent
et 512 Mo de RAM, je pensais que ce serait suffisant.
Je cherche donc à optimiser mes mises à jour pour diminuer l'utilisation
des ressources.
J'aimerais bien écrire en VBA une macro qui me ferait l'équivalent de
RECHERCHEV pour chacune de mes cellules, puis qui me copierait/collerait
la valeur au lieu de conserver la formule. La macro serait donc à lancer
une fois après chaque mise à jour du gros fichier.
1) est-ce que vous pensez que ça améliorerait la situation, ou il faut que
je cherche ailleurs ?
2) comment puis-je faire une telle macro, je débute en VBA : je ne connais
pas l'équivalent de la fonction RECHERCHEV, ni comment lui indiquer dans
quelles cellules faire les opérations, etc...
Quelqu'un a une idée ? Merci d'avance pour votre aide, j'ai été long :-)
A+
Gillou
Bonsoir tout le monde,
Pour essayer de résumer la situation de la manière la plus simple possible
:
J'ai un gros fichier, environ 2500 lignes sur une quarantaine de colonnes,
qui est mis à jour de façon quotidienne par un administrateur et sur
lequel je n'ai pas la main. Ce fichier contient, en gros, des numéros en
colonne A et des infos de facturation pour ce numéro pour chaque mois
depuis un an à partir de la colonne B.
Ce fichier :
- bougeant continuellement
- étant gros
- étant protégé,
je l'ai scindé en plusieurs fichiers, comportant chacun une partie du gros
fichier.
Pour que chaque petit fichier comporte à chaque fois les infos mises à
jour du gros fichier, chacune des colonnes à partir de B des petits
fichiers contient :
=RECHERCHEV(numéro,plage de données dans gros fichier, colonne
correspondant au mois, FAUX)
et les mises à jour des petits fichiers se font au lancement après mise à
jour du gros par l'administrateur.
Mon problème :
apparemment cela fait beaucoup de grosses formules RECHERCHEV et le PC ne
suit pas, j'ai le message "Mémoire insuffisante" à chaque MAJ et Excel
n'arrive pas à mettre à jour toutes les lignes. J'ai pourtant un PC récent
et 512 Mo de RAM, je pensais que ce serait suffisant.
Je cherche donc à optimiser mes mises à jour pour diminuer l'utilisation
des ressources.
J'aimerais bien écrire en VBA une macro qui me ferait l'équivalent de
RECHERCHEV pour chacune de mes cellules, puis qui me copierait/collerait
la valeur au lieu de conserver la formule. La macro serait donc à lancer
une fois après chaque mise à jour du gros fichier.
1) est-ce que vous pensez que ça améliorerait la situation, ou il faut que
je cherche ailleurs ?
2) comment puis-je faire une telle macro, je débute en VBA : je ne connais
pas l'équivalent de la fonction RECHERCHEV, ni comment lui indiquer dans
quelles cellules faire les opérations, etc...
Quelqu'un a une idée ? Merci d'avance pour votre aide, j'ai été long :-)
A+
Gillou
Bonjour Gillou,
Je ne sais pas comment sont organisées tes données du fichier "Maître" et les plus petits fichiers, mais si tu utilisais ADO pour
activex data object, ce serait sûrement plus rapide et plus facile.
Voici un exemple de code que je fournissais il y a quelques temps à un demandeur ... le code n'est pas adapté à ta réalité ... il
manque beaucoup d'informations dans ta question sur la disposition des données, l'emplacement des fichiers ... mais ce pourrait être
un début.
[...]
Bonjour Gillou,
Je ne sais pas comment sont organisées tes données du fichier "Maître" et les plus petits fichiers, mais si tu utilisais ADO pour
activex data object, ce serait sûrement plus rapide et plus facile.
Voici un exemple de code que je fournissais il y a quelques temps à un demandeur ... le code n'est pas adapté à ta réalité ... il
manque beaucoup d'informations dans ta question sur la disposition des données, l'emplacement des fichiers ... mais ce pourrait être
un début.
[...]
Bonjour Gillou,
Je ne sais pas comment sont organisées tes données du fichier "Maître" et les plus petits fichiers, mais si tu utilisais ADO pour
activex data object, ce serait sûrement plus rapide et plus facile.
Voici un exemple de code que je fournissais il y a quelques temps à un demandeur ... le code n'est pas adapté à ta réalité ... il
manque beaucoup d'informations dans ta question sur la disposition des données, l'emplacement des fichiers ... mais ce pourrait être
un début.
[...]
Bonsoir Gillou,
?
Des fichiers bien plus gros peuvent pourtant être lus avec bien moins de
mémoire!
Tu pourrais plutôt que recherchev utiliser index et equiv...
toutefois cette suggestion concerne la méthode de recherche.
Selon ce que tu évoques , là où cela met du temps vient certainement de la
lecture via réseau du fichier source
si au lieu de mettre des formules de recherche tu le récupèrais entier en
liaison cela irait sûrement plus vite
en a1, ='g:chemin[fichier]feuil1'!a1
Bonsoir Gillou,
?
Des fichiers bien plus gros peuvent pourtant être lus avec bien moins de
mémoire!
Tu pourrais plutôt que recherchev utiliser index et equiv...
toutefois cette suggestion concerne la méthode de recherche.
Selon ce que tu évoques , là où cela met du temps vient certainement de la
lecture via réseau du fichier source
si au lieu de mettre des formules de recherche tu le récupèrais entier en
liaison cela irait sûrement plus vite
en a1, ='g:chemin[fichier]feuil1'!a1
Bonsoir Gillou,
?
Des fichiers bien plus gros peuvent pourtant être lus avec bien moins de
mémoire!
Tu pourrais plutôt que recherchev utiliser index et equiv...
toutefois cette suggestion concerne la méthode de recherche.
Selon ce que tu évoques , là où cela met du temps vient certainement de la
lecture via réseau du fichier source
si au lieu de mettre des formules de recherche tu le récupèrais entier en
liaison cela irait sûrement plus vite
en a1, ='g:chemin[fichier]feuil1'!a1
qui est mis à jour de façon quotidienne par un administrateur et sur lequel
je n'ai pas la main
Ce fichier :
- bougeant continuellement
Est-ce qu'il change de lecteur ? de répertoire ?
Bonsoir Gillou,
?
Des fichiers bien plus gros peuvent pourtant être lus avec bien moins de
mémoire!
D'où mon étonnement la 1ère fois que j'ai eu le message d'erreur !Tu pourrais plutôt que recherchev utiliser index et equiv...
toutefois cette suggestion concerne la méthode de recherche.
Je ne connais pas ces fonctions, je vais y jeter un coup d'oeil voir ce
qu'elles font...Selon ce que tu évoques , là où cela met du temps vient certainement de
la
lecture via réseau du fichier source
si au lieu de mettre des formules de recherche tu le récupèrais entier
en
liaison cela irait sûrement plus vite
en a1, ='g:chemin[fichier]feuil1'!a1
Ben malheureusement, les numéros de référence ne sont pas aux mêmes
lignes dans les différents fichiers, d'où la nécessité de faire une
recherche et une correspondance par numéro et non par ligne.
qui est mis à jour de façon quotidienne par un administrateur et sur lequel
je n'ai pas la main
Ce fichier :
- bougeant continuellement
Est-ce qu'il change de lecteur ? de répertoire ?
Bonsoir Gillou,
?
Des fichiers bien plus gros peuvent pourtant être lus avec bien moins de
mémoire!
D'où mon étonnement la 1ère fois que j'ai eu le message d'erreur !
Tu pourrais plutôt que recherchev utiliser index et equiv...
toutefois cette suggestion concerne la méthode de recherche.
Je ne connais pas ces fonctions, je vais y jeter un coup d'oeil voir ce
qu'elles font...
Selon ce que tu évoques , là où cela met du temps vient certainement de
la
lecture via réseau du fichier source
si au lieu de mettre des formules de recherche tu le récupèrais entier
en
liaison cela irait sûrement plus vite
en a1, ='g:chemin[fichier]feuil1'!a1
Ben malheureusement, les numéros de référence ne sont pas aux mêmes
lignes dans les différents fichiers, d'où la nécessité de faire une
recherche et une correspondance par numéro et non par ligne.
qui est mis à jour de façon quotidienne par un administrateur et sur lequel
je n'ai pas la main
Ce fichier :
- bougeant continuellement
Est-ce qu'il change de lecteur ? de répertoire ?
Bonsoir Gillou,
?
Des fichiers bien plus gros peuvent pourtant être lus avec bien moins de
mémoire!
D'où mon étonnement la 1ère fois que j'ai eu le message d'erreur !Tu pourrais plutôt que recherchev utiliser index et equiv...
toutefois cette suggestion concerne la méthode de recherche.
Je ne connais pas ces fonctions, je vais y jeter un coup d'oeil voir ce
qu'elles font...Selon ce que tu évoques , là où cela met du temps vient certainement de
la
lecture via réseau du fichier source
si au lieu de mettre des formules de recherche tu le récupèrais entier
en
liaison cela irait sûrement plus vite
en a1, ='g:chemin[fichier]feuil1'!a1
Ben malheureusement, les numéros de référence ne sont pas aux mêmes
lignes dans les différents fichiers, d'où la nécessité de faire une
recherche et une correspondance par numéro et non par ligne.
Lorsque tu dis que tu n'as pas la main, est-ce que ça veut dire que tu ne
peux pas l'ouvrir, même en lecture seule ?
Ce fichier :
- bougeant continuellement
Est-ce qu'il change de lecteur ? de répertoire ?
En gros, lorsque tu reçois ces messages d'erreur, est-ce que le fichier
maître est ouvert ?
Sinon, il faudrait peut-être trouver le moyen de l'ouvrir, même en lecture
seule.
Ensuite, on pourrait voir si le message réapparaît.
Lorsque tu dis que tu n'as pas la main, est-ce que ça veut dire que tu ne
peux pas l'ouvrir, même en lecture seule ?
Ce fichier :
- bougeant continuellement
Est-ce qu'il change de lecteur ? de répertoire ?
En gros, lorsque tu reçois ces messages d'erreur, est-ce que le fichier
maître est ouvert ?
Sinon, il faudrait peut-être trouver le moyen de l'ouvrir, même en lecture
seule.
Ensuite, on pourrait voir si le message réapparaît.
Lorsque tu dis que tu n'as pas la main, est-ce que ça veut dire que tu ne
peux pas l'ouvrir, même en lecture seule ?
Ce fichier :
- bougeant continuellement
Est-ce qu'il change de lecteur ? de répertoire ?
En gros, lorsque tu reçois ces messages d'erreur, est-ce que le fichier
maître est ouvert ?
Sinon, il faudrait peut-être trouver le moyen de l'ouvrir, même en lecture
seule.
Ensuite, on pourrait voir si le message réapparaît.
Ben malheureusement, les numéros de référence ne sont pas aux mêmes lignes
dans les différents fichiers, d'où la nécessité de faire une recherche et
une correspondance par numéro et non par ligne.
Bonsoir Gillou,
?
Des fichiers bien plus gros peuvent pourtant être lus avec bien moins de
mémoire!
D'où mon étonnement la 1ère fois que j'ai eu le message d'erreur !Tu pourrais plutôt que recherchev utiliser index et equiv...
toutefois cette suggestion concerne la méthode de recherche.
Je ne connais pas ces fonctions, je vais y jeter un coup d'oeil voir ce
qu'elles font...Selon ce que tu évoques , là où cela met du temps vient certainement de
la lecture via réseau du fichier source
si au lieu de mettre des formules de recherche tu le récupèrais entier en
liaison cela irait sûrement plus vite
en a1, ='g:chemin[fichier]feuil1'!a1
Ben malheureusement, les numéros de référence ne sont pas aux mêmes lignes
dans les différents fichiers, d'où la nécessité de faire une recherche et
une correspondance par numéro et non par ligne.
Ben malheureusement, les numéros de référence ne sont pas aux mêmes lignes
dans les différents fichiers, d'où la nécessité de faire une recherche et
une correspondance par numéro et non par ligne.
Bonsoir Gillou,
?
Des fichiers bien plus gros peuvent pourtant être lus avec bien moins de
mémoire!
D'où mon étonnement la 1ère fois que j'ai eu le message d'erreur !
Tu pourrais plutôt que recherchev utiliser index et equiv...
toutefois cette suggestion concerne la méthode de recherche.
Je ne connais pas ces fonctions, je vais y jeter un coup d'oeil voir ce
qu'elles font...
Selon ce que tu évoques , là où cela met du temps vient certainement de
la lecture via réseau du fichier source
si au lieu de mettre des formules de recherche tu le récupèrais entier en
liaison cela irait sûrement plus vite
en a1, ='g:chemin[fichier]feuil1'!a1
Ben malheureusement, les numéros de référence ne sont pas aux mêmes lignes
dans les différents fichiers, d'où la nécessité de faire une recherche et
une correspondance par numéro et non par ligne.
Ben malheureusement, les numéros de référence ne sont pas aux mêmes lignes
dans les différents fichiers, d'où la nécessité de faire une recherche et
une correspondance par numéro et non par ligne.
Bonsoir Gillou,
?
Des fichiers bien plus gros peuvent pourtant être lus avec bien moins de
mémoire!
D'où mon étonnement la 1ère fois que j'ai eu le message d'erreur !Tu pourrais plutôt que recherchev utiliser index et equiv...
toutefois cette suggestion concerne la méthode de recherche.
Je ne connais pas ces fonctions, je vais y jeter un coup d'oeil voir ce
qu'elles font...Selon ce que tu évoques , là où cela met du temps vient certainement de
la lecture via réseau du fichier source
si au lieu de mettre des formules de recherche tu le récupèrais entier en
liaison cela irait sûrement plus vite
en a1, ='g:chemin[fichier]feuil1'!a1
Ben malheureusement, les numéros de référence ne sont pas aux mêmes lignes
dans les différents fichiers, d'où la nécessité de faire une recherche et
une correspondance par numéro et non par ligne.
Bonjour,Ben malheureusement, les numéros de référence ne sont pas aux mêmes lignes
dans les différents fichiers, d'où la nécessité de faire une recherche et
une correspondance par numéro et non par ligne.
Raison de plus pour ramener toutes les cellules sans avoir à se soucier des
localisations
qui pourront être faite ensuite dans les données ainsi récupèrées.
Bonjour,
Ben malheureusement, les numéros de référence ne sont pas aux mêmes lignes
dans les différents fichiers, d'où la nécessité de faire une recherche et
une correspondance par numéro et non par ligne.
Raison de plus pour ramener toutes les cellules sans avoir à se soucier des
localisations
qui pourront être faite ensuite dans les données ainsi récupèrées.
Bonjour,Ben malheureusement, les numéros de référence ne sont pas aux mêmes lignes
dans les différents fichiers, d'où la nécessité de faire une recherche et
une correspondance par numéro et non par ligne.
Raison de plus pour ramener toutes les cellules sans avoir à se soucier des
localisations
qui pourront être faite ensuite dans les données ainsi récupèrées.
Bonjour,Ben malheureusement, les numéros de référence ne sont pas aux mêmes
lignes
dans les différents fichiers, d'où la nécessité de faire une recherche
et
une correspondance par numéro et non par ligne.
Raison de plus pour ramener toutes les cellules sans avoir à se soucier
des
localisations
qui pourront être faite ensuite dans les données ainsi récupèrées.
Salut LSteph
Je ne comprends pas où tu veux en venir : quel est l'intérêt de récupérer
le
fichier cellule par cellule puisqu'après je devrais quand même effectuer
une
recherche pour faire la correspondance numéro du petit fichier / numéro du
gros fichier ?
Merci
Bonjour,
Ben malheureusement, les numéros de référence ne sont pas aux mêmes
lignes
dans les différents fichiers, d'où la nécessité de faire une recherche
et
une correspondance par numéro et non par ligne.
Raison de plus pour ramener toutes les cellules sans avoir à se soucier
des
localisations
qui pourront être faite ensuite dans les données ainsi récupèrées.
Salut LSteph
Je ne comprends pas où tu veux en venir : quel est l'intérêt de récupérer
le
fichier cellule par cellule puisqu'après je devrais quand même effectuer
une
recherche pour faire la correspondance numéro du petit fichier / numéro du
gros fichier ?
Merci
Bonjour,Ben malheureusement, les numéros de référence ne sont pas aux mêmes
lignes
dans les différents fichiers, d'où la nécessité de faire une recherche
et
une correspondance par numéro et non par ligne.
Raison de plus pour ramener toutes les cellules sans avoir à se soucier
des
localisations
qui pourront être faite ensuite dans les données ainsi récupèrées.
Salut LSteph
Je ne comprends pas où tu veux en venir : quel est l'intérêt de récupérer
le
fichier cellule par cellule puisqu'après je devrais quand même effectuer
une
recherche pour faire la correspondance numéro du petit fichier / numéro du
gros fichier ?
Merci