Automatisation récupération données

J'ai téléchargé mon fichier depuis le site, et ça ne fonctionne pas plus...

Peux-tu lancer la macro "test" dans le fichier que je joins, puis modifier I2 et voir si ça fait quelque chose?

Soit ça fonctionne pas du tout soit j'ai ça :

image

Avec la macro test j'ai ça :

image

Et après les modifications dans I2, ça m'ouvre des fenêtres de mise à jour et ça fonctionne

Donc maintenant que tu as lancé la macro test les modifications lancent bien tout? si c'est ça c'est que les évènements étaient désactivés et pas réactivés, dans test j'ai mis un msgbox mais c'est juste pour montrer que la macro est lancée, elle cherche surtout à les réactiver, les fenêtres de mise à jour c'est pour savoir où se trouve le fichier? parce que si on précisait le chemin ça ne demandait pas de dire où se trouvait le fichier.

Merci de ton aide;

Donc maintenant que tu as lancé la macro test les modifications lancent bien tout?

Oui, j'ai inséré ta macro dans mon "vrai" fichier et ça relance bien tout après.

les fenêtres de mise à jour c'est pour savoir où se trouve le fichier?

Oui c'est ça, il me le fait pour chaque cellule, mais normalement une fois que j'ai mis le lien, je n'ai pas de raison d'en changer

parce que si on précisait le chemin ça ne demandait pas de dire où se trouvait le fichier.

préciser le chemin => c'est faire comme ton exemple du début avec le lien dans une colonne et le chemin dans l'autre ?

J'ai tenté de ne faire qu'avec le chemin en me disant que c'était le lien qui n'allait pas, mais ça ne fonctionnait pas plus. Mais c'est sûrement moi qui n'ai pas réussi à modifier le code en ce sens.

Je préfère de base sans le chemin, ça me rajoute une colonne avec une manip supplémentaire à faire, mais y aurait-il éventuellement à partir de mon lien, dans la colonne suivante d'y insérer le chemin automatiquement ?

Si le chemin est constant on peut le déclarer dans le code, si il n'est pas constant il faut soit ajouter une colonne qu'on peut masquer par la suite, soit tout faire manuellement à chaque fois.

Non, le chemin n'est pas constant. Ce ne serait pas drôle sinon.

Oui pour masquer la colonne, mais est-ce que le chemin peut se remplir dans la cellule tout seul via une formule ou VBA depuis le lien ?

Via formule il faudrait une liste ou un critère pour définir où se trouve le chemin, par code VBA pareil, il faudrait un critère permettant de définir le chemin.

Bonjour

j'ai avancé sur mon fichier et j'ai inséré tous mes liens. A voir dans le temps si je rajoute la colonne avec le chemin.

Dernière question : est-il possible d'adapter le code VBA (j'ai tenté mais ça fonctionne pas ) pour qu'un résultat apparaisse dans une autre feuille de calcul.

voilà ce que j'ai fait (code mis dans la feuille de calcul où doit apparaitre le résultat) :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim zone As Range, cel As Range
Dim ligne As Long

Application.EnableEvents = False

For Each zone In Target.Areas
    For Each cel In zone.Cells
        If (Target.Column = 8) And Target.Row >= 2 Then
            ligne = Target.Row
           If Range("Liste Affaires! h" & ligne) <> "" Then
                Range("g" & ligne).Formula = "='" & Range("Liste Affaires! h" & ligne) & "[" & Range("Liste Affaires! h" & ligne) & "]Devis'!$AA$295"

            End If
        End If
    Next cel
Next zone

Application.EnableEvents = True
End Sub

Merci

Bonjour,

super si tout avance petit à petit!

pour faire appel à la cellule d'une autre feuille que la feuille actuelle, il faut plusieurs choses, passer par un module et pas directement par la macro évènementielle car elle ne peut pas faire appel à d'autres feuilles, puis utiliser Sheets("Liste Affaires").Range

Tu peux coder une macro lienFichier dans un module par exemple et simplement mettre tout ton code dedans, pour la macro évènementielle tu mettras:

Private Sub Worksheet_Change(ByVal Target As Range)
lienFichier 'appelle la macro lienFichier pour l'excécuter
End Sub

Merci!

Bon je pense faire plus simple : je vais mettre le résultat dans la feuille liste affaires et récupérer la donnée, ça redondance l'information à 2 endroits mais c'est pas grave.

Coucou,
Me voilà au plus triste

J'ai fini mon fichier de base avec d'autres codes VBA et formules. J'étais contente jusqu'à devoir remplir mes données...

Problème : le code VBA ne fonctionne plus : j'ai une erreur sur les lignes "range".

Du coup, j'ai repensé à tes précédents messages donc j'ai remis le chemin du fichier dans une autre colonne (lien en H et chemin en O). J'ai essayé pas mal de choses, sans succès, jusqu'à même reprendre ton premier code et juste modifier les colonnes mais même comme ça pas plus de succès.

Une idée s'il te plait ?

Merci de ton retour

image

Bonsoir,

Hmm difficile de dire d'où vient l'erreur pour le moment, la syntaxe me semble toujours bonne, le code n'a pas changé de toute façon.

Visiblement VBA n'arrive pas à atteindre les range mais la question c'est pourquoi? Ce n'est pas un problème de chemin, ça ne ferait pas planter VBA, au pire ça mettrait une erreur pour la formule sur la feuille Excel. C'est sur quelle ligne exactement que ça plante? Celle où tu mets la formule? quand tu commences tes boucles? le screen ne donne pas beaucoup d'informations, je ne sais pas quelles sont les valeurs des variables? sur quelle ligne ça plante exactement?

C'est ça qui bloque :

image

J'ai l'impression que le problème vient des liens et des chemins :

si j'insère le lien via "insérer un lien" et en parcourant les dossiers, ça ne fonctionne pas, si je le fais avec un lien récent ça marche (l'affichage du lien change d'ailleurs...)

Et dès que j'ai un bug ça ne fonctionne plus du tout, je suis obligée de fermer et de rouvrir le fichier. A l'ouverture d'ailleurs j'ai un message d'erreur et il m'ouvre un fichier réparé...

Quand ça fonctionne, c'est avec le lien + le chemin, et ça m'ouvre une nouvelle fenêtre pour refaire le lien et choisir la feuille de calcul. Un peu fastidieux au final...

Je me demande si je ne vais pas insérer mes données manuellement au final...

Ca plante dès que j'insère le lien

Bonjour,

Je sais d'où vient le problème, c'est les liens, ça plante de fou à chaque fois. Je vais chercher mon fichier sur le réseau, le chemin est long en plus.

J'ai tenté avec la macro avec juste le chemin (sans la référence au lien) mais pas plus de succès. J'ai retenté avec la formule indirect que tu m'avais donné au début avec le fichier ouvert, que ce soit avec le lien ou le chemin j'ai #REF!

J'ai essayé avec l'onglet "données/obtenir des données/à partir d'un fichier/à partir d'un classeur" mais j'avoue que je ne sais pas trop comment ça marche ni si c'est utile dans mon cas.

Bonjour,

sinon au lieu de mettre un lien, qui de toute façon va servir à ouvrir le fichier je pense, il faudrait plutôt intégrer un double clic sur la ligne qui ira ouvrir le fichier avec le chemin et le nom, ou uniquement le nom, ça sera moins lourd je pense.

Ah ouais c'est chouette ça !

Bonne idée.

Mais comment on fait s'il te plait ?

Il faut réadapter une partie du code en partant sur ça:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'utiliser target sans les boucles
Workbooks.Open (nomFichier)

Cancel = True
End Sub

La private sub change, ce n'est plus un changement sur une cellule qui déclenchera la macro, mais un double clic, on regarde donc uniquement la cellule sur laquelle le double clic a lieu, et on annule le double clic à la fin de la macro pour que ça ne sélectionne pas la cellule en modification.

Rechercher des sujets similaires à "automatisation recuperation donnees"