Faire un copier coller de données d'une macro de recherche

Bonjour à tous,

Je reviens encore vers vous pour m'aider sur le problème suivant:

A l'aide de Dan et Banzaî64, j'ai pu incorporer un code pour qu'une macro remplace une formule de recherche.

Tout était en place et fonctionnel, mais cette feuille doit être copier coller dans d'autres fichiers. Le problème est que les données de la macro ne sont plus visible vu que la macro tourne dans un autre fichier.

Y a t'il une solution à ce problème, ou dois-je m'orienter vers une autre procédure.

Merci encore pour vote aide et bonne journée.

Le code:

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next

Dim Kase As Range

If Not Application.Intersect(Target, Range("B15:B500")) Is Nothing Then

If Target.Count > 1 Then

For Each Kase In Target

Worksheet_Change Kase

Next Kase

Exit Sub

End If

If Not IsEmpty(Target.Value) Then 'on verifie que la cellule n'est pas vide de données

Target.Offset(0, 3).Formula = "=VLOOKUP(B15:B500,ZONE!A2:B72,2,0)"

Else

Target.Offset(0, 3).ClearContents 'on efface la formule

End If

End If

Bonjour,

Quel type de copie de la feuille ? S'il s'agit d'un export (Copier la feuille dans un nouveau classeur), la macro suivra la feuille (puisqu'il s'agit d'une évènementielle se trouvant donc sur son module). Copie qui peut également être faite par VBA.

Cordialement,

Ferrand

Bonjour,

Merci pour cette réponse et désolé de ne pas avoir répondu plus tôt.

J'ai encore fait le test et si l'on utilise la manière classique du copier/coller dans un autre fichier, j'obtiens le message #N/A dans la cellule de destination. La seule solution est de faire un collage spécial et de sélectionner Valeur pour que toutes les données soient collées correctement.

Le soucis est qu'il y a plusieurs utilisateurs sensés faire cette opération et je crains que de ce fait il y aura des pertes de données.

Je joins le fichier avec lequel j'ai fais le test.

Merci encore pour votre aide

Bonjour,

Je ne suis pas encore bien réveillé mais j'ai l'impression qu'on ne s'est pas bien compris.

Ceci dit, je n'ai pas non plus une idée claire de ce que tu veux faire...

A ce qu'il m'avait semblé, tu voulais pouvoir copier le contenu de Feuil2 dans un autre classeur, et conserver le dispositif de recherche utilisant la macro Banzai-Dan que tu cites. Evidemment, si tu colles le contenu la macro ne suis pas. Je suppose aussi que la table de recherche (Feuil1) existe dans le classeur dans lequel tu copies, sinon la macro n'aura pas d'effet.

Je te suggérais donc d'exporter la feuille pour en insérer une copie dans le classeur cible. La macro étant attachée à la feuille la suit.

Tu peux faire l'expérience en manuel : clic droit sur l'onglet de Feuil2 > Déplacer ou copier... > tu coches Créer une copie, tu choisis nouveau classeur > tu valides (OK) et la copie apparaît (dans un nouveau classeur. A ce stade, une liaison est créée avec l'ancien classeur par les formules existantes [ta macro recherche ne fait pas la recherche elle-même, elle insère la formule "à la carte", quand il y a lieu], tu effaces simplement la plage A1:A15, la macro fait le reste, elle nettoie de fait les liaisons avec le classeur source. Il n'y a plus qu'à insérer ta feuille exportée dans le classeur cible.

Si tu disposes du classeur cible (possibilité si tu entendais copier le contenu d'un classeur à l'autre, au lieu de copier dans un nouveau classeur, tu copies directement dans le classeur cible. Meilleure solution par ailleurs car elle limite les problèmes liés à des versions Excel différentes d'un classeur à l'autre.

L'opération peut être réalisée par macro. A suivre (post suivant) [j'en suis à déjeuner et j'ai besoin d'un café ]

Ferrand

MFerrand

Merci pour ces renseignements,

Le problème est que je dois limiter les manipulations pour ma demande, car ce fichier doit être utilisé par pas mal de personnes, comme moi peu expertes.

Merci pour l'aide.

Bonjour,

Je me livrais à quelques tests avant de poursuivre...

Si la table de recherche figure dans tous les classeurs concernés (si ce n'est pas le cas, quel que soit le mode de copie dans le classeur cible, la recherche ne saurait fonctionner...)

Si tu disposes du classeur cible, à partir du classeur source, tu peux lancer copie de la feuille dans le classeur cible, et aucun problème la recherche fonctionnera...

Il est plus confortable de le faire par macro (macro dans le classeur source) mais la question que je me posais à cet égard était que tu affichais travailler avec Excel 2003, bien que le classeur modèle soit en .xlsm ? (c'était l'objet de mes tests...)

Il faudrait donc savoir si l'on fonctionne sur une même version d'Excel et laquelle ou s'il faut tenir compte de versions diverses ?

Cordialement,

Ferrand

Voilà pour un premier test :

Sub ExportFeuille()
    Dim noucla As String
    noucla = ThisWorkbook.Path & "\Export_Feuil2"
    Worksheets("Feuil2").Copy
    ActiveSheet.Range("A1:A15").ClearContents
    On Error Resume Next
    Application.DisplayAlerts = False
    With ActiveWorkbook
        .SaveAs noucla, xlWorkbookNormal
    End With
    Application.DisplayAlerts = True
End Sub

Cette macro (dans ton classeur modèle) va exporter une copie de Feuil2 dans un nouveau classeur. L'export se fera au format de fichier antérieur à 2007. La macro fonctionnera aussi bien sur 2003 que 2010.

Evidemment, cet export implique une 2e manoeuvre pour l'insérer dans le classeur cible. Il est justifié si l'on doit transmettre la feuille à quelqu'un qui à son tour la déplacera (ou copiera) dans son classeur.

Dans l'immédiat, le test doit te permettre de constater qu'un nouveau classeur est créé dans lequel la feuille a été copiée et que la macro a suivi la feuille, qu'elle se trouve bien dans le nouveau classeur.

Deuxième test :

Sub ExportFeuille2()
    Dim clacible As Workbook
    If ActiveWorkbook.Name <> ThisWorkbook.Name Then
        Set clacible = ActiveWorkbook
    Else
        MsgBox "Le classeur actif est votre classeur source." & Chr(10) & "Activez le classeur cible " _
         & "et relancez la macro.", vbInformation, "Erreur de sélection"
        Exit Sub
    End If
    Worksheets("Feuil2").Copy after:=clacible.Worksheets(clacible.Worksheets.Count)
    ActiveSheet.Range("A1:A15").ClearContents
End Sub

Cette fois, on ouvre le classeur cible (le classeur source étant ouvert). On lance cette macro à partir du classeur cible (classeur actif). La feuille sera copiée dans le classeur cible à la suite des feuilles existantes. Un petit test vérifie que le classeur actif n'est pas le classeur source avant de réaliser l'opération, et invite le cas échéant à activer le classeur cible avant de relancer la macro.

Cordialement,

Ferrand

Rechercher des sujets similaires à "copier coller donnees macro recherche"