Copier coller en fonction d'une cellule

Bonjour à tous,

Pourriez vous m'aider pour corriger un bug sur ma macro... je deviens dingue, je ne trouve pas où ça cloche !

Ci-joint un fichier Excel

Je vous expliquer rapidement ce que je veux faire:

Je veux que les éléments de l'onglet "Paris" se copie colle dans BDD en fonction de la date de saisie en J1. Le copier coller doit se faire à la dernière ligne non vide du tableau.

Et aussi j'aimerai que le copie-colle se fasse pour pour chaque onglet "paris et nantes" d'un seul coup et non un par un.

(mon fichier est un exemple, dans la vraie vie j'ai des dizaines d'onglets.

Merci de votre aide

Amicalement

Bonjour et bienvenue sur le forum,

Teste en changeant la cellule J1 de la feuille bdd avec la liste de validation.

J'ai changé l'origine de la liste de validation car le format date n'était pas le même et pour aussi éviter les risques d'erreur.

Je veux que les éléments de l'onglet "Paris" se copie colle dans BDD en fonction de la date de saisie en J1. Le copier coller doit se faire à la dernière ligne non vide du tableau.

J'ai prévu d'effacer la plage des importations à chaque fois que j1 est changé.

Si toutefois tu ne souhaites pas l'effacer, supprime la ligne:

Sheets("Bdd").Range("B2:L100").ClearContents

cordialement

ddetp88

Merci beaucoup...

Je test ça demain et je te dis.

Merci encore

Bonjour ddetp88

Merci pour ce code. Je suis pas un grand expert du VBA. Du coup, je n'arrive pas à utiliser ta macro car quand je clique sur le bouton "import" il me donne un message d'erreur " Impossible d'exécuter la macro.....il est possible qu'elle ne soit pas disponible..."

Je précise que l'utilisation des macros est bien activé sur mon poste.

Je suppose qu'il s'agit du fait la macro n'est pas enregistrer dans mon répertoire personnel des macros ? Ca je ne sais pas faire... je regarde sur les forum mais je ne trouve pas la procédure exacte à suivre.

Pourrais tu m'aider stp ?

merci encore

Amicalement

Max

Re, j'ai changé le nom de la macro.

Dans l'exemple que je t'ai fait, tu ne devrais pas à avoir à utiliser le bouton car j'ai mis un événement sur la cellule J1 de la feuille BDD

Si toutefois tu veux déclencher la macro importation avec le bouton, tu peux le faire en cliquant droit sur le bouton puis Affecter une macro... tu choisis la macro nommée importation.

Il faudra à ce moment là effacer le code de la feuille bdd qui ne se justifie plus.

Si c'est ce que tu veux faire et que tu n'y arrives pas, dis le.

cordialement

ddetp88

Merci DDETP88

Ca fonctionne du tonnerre merci...

Toutefois, j'ai voulu ajouter le collage de la valeur L1 de l'onglet BDD mais, il ne me renvoie pas la bonne information... vois-tu ou es le souci stp ? (je joins nouveau fichier Excel)

Encore une dernière chose, est-il possible que tu puisses ajouter à ton code le maintien de la mise en forme de l'onglet source (par exemple paris...). J'ai essayé de le faire, mais sincèrement ton code est trop complexe pour moi, pas assez fort en vba.

Merci encore !

Amicalement

re,

Toutefois, j'ai voulu ajouter le collage de la valeur L1 de l'onglet BDD mais, il ne me renvoie pas la bonne information... vois-tu ou es le souci stp ? (je joins nouveau fichier Excel)

Où veux-tu coller cette information? Elle est issue d'une liste de validation à laquelle je n'ai pas accès.

Elle cible des données d'un autre fichier sur ton disque S:

'S:\CG\TdB COMEX\Construction nouveau TdB\[Base de données PRODUCTION.xlsm]Réf'!#REF!

Pour la mise en forme des cellules, j'ai ajouté des mises en formes conditionnelles dans l'onglet bdd pour que les couleurs de fond et de quadrillage soient respectés.

Pourrais-tu être plus précis sur ce dernier point. S'agit-il de mis en forme de textes, de nombres, ...? et pour quelles colonnes...

à+

ddetp

Bonjour DDETP88,

Merci pour ta réponse,

En effet, le L1 tapait sur une ancienne liste, que j'ai modifié dans le fichier joint mais malgré cela, il colle pas la bonne info :/

Pour la mise en forme, merci pour les modifs. Voila au détail près ce que je voulais (c'est en encadré dans l'onglet BDD du fichier joint)

Merci de ton aide.

ok, mais je ne peux le faire que demain matin.

@+

ok merci

Bonjour,

Corrections apportées conformément à ce que tu souhaitais

Bonne suite

ddetp

Bonjour ddetp88

Merci infiniment !

amicalement

Bonjour DDETP88

Je te solicite encore une fois pour la même chose que la dernière fois. Voudrais tu m'aider stp ?

Voilà, ci-joint un fichier Excel avec ton code en Module 1

J'aimerai y apporter quelques modifications après quelques semaines d'utilisations et cela fonctionne correctement en situation réelle. Et du coup je me rends compte qu'il faut que j'apporte des modifs mais j'y arrive pas.

dans le fichier joint, dans l'onglet BDD j y exprime les modifications. Voudrais tu m'aider stp ?

Merci beaucoup

Max

Bonjour,

Tu as interverti des colonnes ce qui explique que la date n’apparaissait plus.

Par ailleurs, j'ai remis en place les mfc effacées.

Bonne réception

ddetp

Merci !

Ca fonctionne sur le fichier que tu m'a envoyé mais quand j'importe le code dans mon fichier (et je t'assure que je ne change absolument rien à la structure du fichier) j'ai un bug sur la ligne 16 du code (je mets un fichier excel qui reprends la copie écran du bug)

Je comprends pas...j'ai pourtant rien changé dans Excel (j'ai respecté le meme fichier que je t'avais envoyé tout à l'heure)

14copie-ecran.zip (259.16 Ko)

re,

le mieux est que tu anonymes ton fichier et que tu l'envoies.

Cette ligne de code ne devrait pas poser de problème. Les cellules de cette colonne ne sont pas protégées?

ddetp

Bah c'est ennuyeux car le fichier que je t'ai communiqué cet AM est justement mon fichier final qui a été anonymiser :/

J'ai just un doute.... sur mon fichier initiale il y avait une liste déroulante affecté au cellule de l'onglet BDD que j'ai enlevé dans le fichier que je t'ai transmis.

Mais la je suis chez moi... je regarde demain au bureau ce que ça donne en enlevant aussi la liste deroulante

Merci de ton aide.

Ne cherche pas plus loin, c'est ça l'erreur. Tu dois avoir une erreur 2042 sur la valeur de x dans la ligne

x = Application.Match(.Range("J1"), Sheets(i).[2:2], 0) 'cherche la colonne

Comme x est en erreur,

.Cells(Lnbdd + L, "G") = Format(Sheets(i).Cells(2, x), "mm-yyyy") ' Période'

tu as un arrêt sur cette ligne car x est en erreur.

Maintenant, il savoir comment se fait l'importation.

Est-ce que tu veux qu'elle se fasse par rapport à un mois donné et auquel cas il faut savoir où on prend la référence du mois.

Est-ce que tu veux importer l'ensemble des mois et auquel cas on modifie le code pour que toutes les colonnes soient balayées.

A toi de dire.

ddetp

Bonjour DDETP88,

Je suis déçu... c'est pas ça qui bug.

Je te transfère le fichier et tu vas voir...

Ce qui est étrange, c'est que quand tu supprimes l'onglet BDD (en attente de contrôle macro), alors la macro (ne bug pas) mais ne réalise aucune action

Sinon pour répondre à ta question précédente... idéalement, avoir les deux options seraient top (un bouton juste pour le mois et un bouton pour écraser et reprendre toutes les données)

Bonjour,

Ce qui est étrange, c'est que quand tu supprimes l'onglet BDD (en attente de contrôle macro), alors la macro (ne bug pas)

Un peu normal que tu plantes dans la mesure où la feuille "Bdd (en attente de contrôle macro)" est traitée par la macro ce qui sature la mémoire. Il faudrait modifier le test

If .Name <> "Réf" And .Name <> "BDD" Then

par

If .Name <> "Réf" And .Name <> "Bdd (en attente de contrôle macro)" And .Name <> "BDD" Then

ou envisager un autre test qui reprendrait une logique des noms des feuilles.

Sinon, j'ai apporté des modifications pour un gain de rapidité. Le traitement ligne par ligne est efficace mais sur des petites quantités de données. Je pense que ton fichier va contenir plus de lignes que dans l'exemple.

Le code fait donc des copies ciblées en deux fois de l'ensemble des données contenues dans les feuilles.

Je te conseille donc de faire la mise en forme soit conditionnelles soit le formatage des cellules des feuilles PA, NA,BX,MA,ST comme tu souhaites les voir apparaitre dans la feuille Bdd.

J'ai fait les deux premières feuilles (PA et NA) à titre d'exemple. A toi de voir pour les autres.

Tu as trois boutons.

L'un qui importe en fonction du mois préalablement sélectionné en J1 feuille Bdd.

Un autre qui importe tous les mois

Un dernier qui efface les données de la feuille Bdd.

Bonne continuation dans ton projet.

Je n'aurai que très peu de temps à consacrer au forum cette semaine. Je te conseille donc de lancer un nouveau fil si tu as d'autres demandes sur le fichier là.

Au plaisir de te rendre service. Attention j'ai viré les listes de validation et limité les mfc car le fichier était trop volumineux.

ddetp88

Rechercher des sujets similaires à "copier coller fonction"