Problème de code

Bonjour,

Ce code fonctionne super bien sur mes fichiers "test" et pas du tout sur mes fichiers "réels". J'en perds mon latin!!!

Quelle âme charitable pourrait jeter un coup d’œil et me dire ce qui cloche. J'ai l'impression qu'il copie sur la même feuille!!!

Merci

Sub Importer_Dn()

Set wb1 = ThisWorkbook
Set F1 = wb1.Sheets(1)
F1.Unprotect "test123"
Rows.Hidden = False
Columns.Hidden = False

folderPath = Application.ActiveWorkbook.Path
myPath = Application.ActiveWorkbook.FullName

TheFile = Application.GetOpenFilename("Classeurs Excel(*.*),*.*")
Set wb2 = Workbooks.Open(TheFile)
Set F2 = wb2.Sheets(1)
F2.Unprotect "test123"
Rows.Hidden = False
Columns.Hidden = False

If wb2.Name = wb1.Name Then
    MsgBox ("Aucun fichier n'a été sélectionné, la macro est interrompue")
    Exit Sub
Else
    MsgBox ("Le fichier choisi se nomme : " & wb2.Name)

    F1.Range("CB60:CB73").Value = F2.Range("CB60:CB73")
    F1.Range("CB246:CB327").Value = F2.Range("CB246:CB327")

     F2.Range("CB60:CB73").Copy              ' Copier ce que j'ai choisi de l' InputFile:
     F1.Range("CB60:CB73").PasteSpecial Paste:=xlValues

     F2.Range("CB246:CB327").Copy            ' Copier ce que j'ai choisi de l' InputFile:
     F1.Range("CB246:CB327").PasteSpecial Paste:=xlValues    ' , Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End If

F1.Protect "test123"
'wb1.Close
F2.Protect "test123"
wb2.Close

End Sub

Salut,

Une macro peut très bien fonctionner sur un fichier et - pour une petite peccadille insignifiante de rien du tout - ne plus fonctionner sur un autre fichier. Mais ça peut bloquer à près de 1254 endroits différents et il est difficile de te dire lequel dans ton cas. On peut voir tes fichiers réels ?

Je n’avais déjà pas répondu à ton précédent fil car il n’y avait pas de fichier, mais tu as eu de la chance, tu as quand même reçu une réponse.

Cordialement.

Bonjour Yvouille,

Tu as raison et je comprends qu'il faille joindre des fichiers pour faciliter les tests. Malheureusement mes fichiers sont grands et confidentiels. Juste le temps de préparer des fichiers allégés et avec des données fictives.

Avec tous mes remerciements

Voici deux fichiers pour les tests.

La macro sera lancée depuis le fichier Cible.xls.

Elle devra récupérer une partie des données se trouvant dans Source.xls. Le fichier Source.xls ne doit subir aucun changement et aucune sauvegarde.

8cible.zip (8.33 Ko)
7source.zip (8.99 Ko)

Bonjour,

afin de trouver l'erreur de conception, ne reste plus qu'à suivre la progression du code en mode pas à pas via la touche F8

tout en contrôlant le contenu de la fenêtre des Variables locales à partir des classeurs réels …

Entre les indications et le code, il y a contradiction !

Vérifier donc aussi ce qu'effectue le code vis à vis de ce qu'il est censé réaliser …

Salut Onsmaram,

J’ai testé ta macro et je ne vois pas ce qui bloque ! Chez moi ça passe comme une lettre à la poste.

Il y a un passage de ton code qui n’agit en aucune manière et qui peut être supprimé selon moi. Il s’agit des deux lignes ci-dessous :

     F1.Range("C5:C25").Value = F2.Range("C5:C25")
     F1.Range("C30:C67").Value = F2.Range("C30:C67")

Qu’est-ce qui ne passe pas chez toi ?

Il me semble que ton code pourrait être simplifié. Est-ce toujours le même fichier source que tu ouvres ou est-ce vraiment différents fichiers selon les fois ?

A te relire.

C'est fou !!!

La même commande fonctionne super bien sur les fichiers de test mais dans mon code en utilisant F8, j'ai remarqué qu'une fois il déprotège la feuille cible, il saute sur une autre macro qui n'a rien a voir avec celle la!!!

Pour répondre à ta question,

"Est-ce toujours le même fichier source que tu ouvres ou est-ce vraiment différents fichiers selon les fois ?"

Oui, le fichier source dépend à chaque fois du fichier cible. Ils doivent correspondre à la même personne.

Je suis d'accord avec toi concernant :

F1.Range("C5:C25").Value = F2.Range("C5:C25")

F1.Range("C30:C67").Value = F2.Range("C30:C67")

et je les avais déjà enlevé dans mon code.

Onsmaram a écrit :

C'est fou !!!

La même commande fonctionne super bien sur les fichiers de test mais dans mon code en utilisant F8, j'ai remarqué qu'une fois il déprotège la feuille cible, il saute sur une autre macro qui n'a rien a voir avec celle la!!!

n'as-tu pas de macro événementielle dans ton classeur ? ceci pourrait expliquer l'exécution d'une code qui n'a rien à voir ...

Bonjour h2so4,

J'ai testé avec "Application.EnableEvents = False et Application.EnableEvents = True" cela ne change pas!!!

Bonjour,

dans quelle procédure se trouve le code qui s'exécute et qui n'a rien à voir ?

C'est une fonction dans le même module:

Public Function Compare_Date(Niveau As String, Date1 As Date, Date2 As Date)

Compare_Date = DateDiff(Niveau, Date1, Date2)

End Function

Public Function Compare_Date(Niveau As String, Date1 As Date, Date2 As Date)

Compare_Date = DateDiff(Niveau, Date1, Date2)

End Function

Une réflexion:

Je ne connais pas beaucoup les possibilités de la fonction du gestionnaire de noms.

Si la colonne qui contient les données source est liée à une fonction de gestion de nom ex:

Nom Valeur Fait référence à étendue

Adresse_Principale 1, rue de Paris ='F1'!$CB$62 F1

En sachant que cette colonne est la même dans les deux fichiers

Peut-on utiliser ces champs nommés pour copier les donnée de la colonne du fichier 1 sur le Fichier 2 sans perdre les noms et sans que les dossiers restent liés?

C'est peut être cela qui me pose problème!!!

Bonjour,

utilises-tu comparedate comme fonction dans des cellules excel ou comme fonction appelée dans par ton code vba ?

Bonjour,

Oui, dans mon module "code" j'ai une fonction :

Public Function Compare_Date(Niveau As String, Date1 As Date, Date2 As Date)

Compare_Date = DateDiff(Niveau, Date1, Date2)

End Function

Mais à aucun moment je l’invoque dans le code qui me sert à copier des parties d'une colonne d'un fichier à un autre.

Cdlt

bonjour,

sans le fichier qui provoque l'erreur je ne peux plus t'aider.

Rechercher des sujets similaires à "probleme code"