Quelquun pour m'écrire un petit code ?

bonjour,

Je découvre le VBA et j'aurai besoin d'un code pour agir sur un fichier Excel 2016. Au départ je pensais le faire moi même mais je me rends compte que je n'aurai pas le temps pendant les 2 semaines qui arrivent.

Est-ce que quelqu'un pourrait me l'écrire ?

Le but est de copier une partie des lignes de cette feuille "Données " (à partir de la ligne 6 jusque' à 300 ) dans un autre classeur de nom "Réception" que j'ouvrirai manuellement contenant une feuille nommée "Réception » à partir aussi de la ligne 6 .

Il faudra copier les colonnes allant de A à J

Les tableaux des 2 feuilles sont normalement identiques et de même format.

Les conditions pour copier et envoyer les lignes dans le classeur " Réception" est d’appuyer sur le Bouton M5 que je créerai et d'avoir les dates à partir de M6 comprises entre M3 et M4 ou identiques.

Les dates M3, M4 et M6 sont renseignées manuellement.

Voir fichier joint.

merci d'avance

4achat-vierge.xlsm (27.12 Ko)

Bonjour,

J'ai pas compris ce que tu voulais faire avec les dates...

En revanche pour la copie de donnée voici un exemple ci-joint. J'ai annoté la code pour que tu puisse l'adapter à ton cas.

Ps : Il est imprtant que la feuille où les cellules vont être copié soit ouvert.

@ +

9achat-vierge.xlsm (27.90 Ko)

merci , pour la date je rentre moi même les 2 dates en M3 et M4 pour créer une période, et à partir de M6 seules les lignes avec les dates se situant dans la période fixée par M3 et M4 seront envoyées.

est-ce un peu plus clair ?

Huuum je commence à comprendre, mais dans quelle colonne se situe les dates sur tes lignes à exporter ?

de M6 à M300 j'entre une date et si par exemple dans M8 la date est comprise entre M3 et M4 alors j'envoie la ligne copiée de A8 à J8 à mon autre classeur que j'aurai ouvert manuellement

je l'ai adapté à mes besoin sans les dates pour le moment mais quand j'appuie sur Export j'ai une erreur:

erreur d'éxécution "9"

sur cette ligne : Windows("Réception - Copie.xlsm").Activate

Concernant les dates je passe mon tour...

Pour l'erreur, la syntaxe me parait pourtant bonne...

Vous me posez une colle , en espérant que d'autre personne pourront vous répondre

@ +

Bonjour Cluedo, le forum,

pour ta ligne : Windows("Réception - Copie.xlsm").Activate

1) vérifie bien les caractères ; c'est peut-être : Windows("Reception - Copie.xlsm").Activate

2) essaye sans l'extension : Windows("Réception - Copie").Activate

ou Windows("Reception - Copie").Activate

dhany

merci pour ton aide mais avec ou sans l'accent ou l'extension c'est pareil.

Vous pouvez regarder mon nouveau fichier j'ai simplifié ma demande avec un seul classeur.

ce serait vraiment cool de pouvoir résoudre mon petit problème.

merci d'avance.

6achat-vierge.xlsm (45.25 Ko)

y'a aucune donnée à part la date du 10/06/2018 en L6 ! crois-tu vraiment que c'est à nous d'inventer des données pour vérifier si la macro qu'on va réaliser fait bien son travail ? et bien sûr, il faut des données significatives et différentes, pas toutes les mêmes !

par données significatives, je veux dire par exemple que si tes dates de la colonne L sont toutes en dehors de l'intervalle actuel du 08/06/2018 au 18/06/2018, y'aura donc aucune ligne à copier ! donc pas de vérification possible !

il ne faut pas non plus l'inverse : toutes les lignes ont des dates en colonne L dans l'intervalle ; car alors, toutes les lignes seront copiées sur la 2ème feuille, et on pourra pas vérifier qu'les lignes hors intervalle n'ont pas été copiées (comme ça doit être le cas).

merci d'envoyer un autre fichier avec une vingtaine de lignes de données remplies (colonnes A à J et L).


remarque subsidiaire : je suppose que c'est à partir de la ligne 6 car ton bouton Export recouvre L5 ; or tu pourrais faire ceci :

1) remonter « du 08/06/2018 au 18/06/2018 » d'une ligne, donc de K3:L4 en K2:L3

2) ça a libéré K4:L4 où tu as plus de place pour remonter ton bouton Export

3) ta ligne 5 devient libre et peut être utilisée, car tu peux saisir une date en L5

avec cette nouvelle structure, la copie se fera donc des lignes 5 à 300, selon les conditions de dates fixées.

attention : précise bien si tu veux ou non cette nouvelle disposition !

dhany

ok excuse moi pour les cases non remplies mais je pensais bêtement que ça aller vous gêner.

j'ai rempli mes cases avec des valeurs faciles pour ce repérer et j'ai modifier l'emplacement des dates et du boutons.

encore vraiment merci de bien vouloir m'aider.

6achat-vierge.xlsm (46.92 Ko)

ah oui, c'est bien mieux comme ça !

merci pour le nouveau fichier, et tu as très bien fait de suivre mon idée en libérant la ligne 5 !

(ça évite ainsi une ligne vierge inutile)

dhany

Je te retourne ton fichier modifié :

6achat-vierge.xlsm (44.47 Ko)

À l'ouverture du fichier, tu es sur la 2ème feuille "Réceptions" : note qu'il y a seulement les entêtes, et y'a aucune données.

Va sur la 1ère feuille "Données" ; note que j'ai déjà corrigé ta date en L3 : tu avais oublié la 2ème barre oblique : il y avait 18/062018 au lieu de 18/06/2018 ! donc bien sûr, la comparaison de dates ne pouvait pas se faire correctement !

Fais au choix Ctrl e, ou clique sur ton bouton « Export ».

Alt F11 pour voir le code VBA, puis revenir sur Excel


Ne cherche pas ton instruction Windows("Réception - Copie.xlsm").Activate : elle n'y est plus, et preuve est faite qu'on peut très bien s'en passer ! oh, un léger détail : si elle ne marchait pas, c'est tout à fait normal puisque la feuille s'appelle "Réceptions" et pas "Réception - Copie" ; heureusement que j't'avais demandé de vérifier l'orthographe, hein ?


Attention : si tu refais Ctrl e ou si tu cliques de nouveau sur le bouton « Export », les même lignes seront copiées de nouveau, mais à la suite des autres ; or tu n'as pas dit si tu voulais une seule copie ou plusieurs.


Si besoin, tu peux demander une adaptation.

Merci de me dire si ça te convient.

dhany

ok vraiment merci pour ton travail, ça me convient très bien mais je te recontacterai pour une ou deux petites modifs en débuts de semaine prochaines.

bon Week end.

merci pour ton retour ! bon weekend à toi aussi, et à la semaine prochaine !

dhany

Bonjour,

Alors grace à ton aide j'ai ajouté certaines fonctions dans d'autres feuilles en faisant des "copié/collé et bidouillant".

Maintenant pour terminer les modifications de mon classeur voilà ce qu'il me manque même si c'est du superflux:

L'idéal serait d'appuyer sur le Bouton Clear en "i1"pour effacer le contenu des lignes à partir de la ligne 5 dans" Réceptions" et si celà est possible, l'appui sur "Envoi" en "j1" copierai cette feuille "Réceptions"au format Excel pour l'envoyer via Outlook 2013, l'adresse du destinataire serait remplie manuellement.

merci .

Pour l'envoi de mail j'ai trouvé ça sur ce forum c'est nickel mais reste à mettre la feuille souhaitée en pièce jointe.

Option Explicit

Sub envoi()

Dim messagerie As Object

Dim email As Object

Set messagerie = CreateObject("Outlook.Application")

Set email = messagerie.CreateItem(0)

With email

.to = "mettre ici adresses email"

.Subject = "mettre ici le titre du mail"

.body = "mettre ici le contenue"

.ReadReceiptRequested = True

.display ' à remplacer par .send si ok

End With

Set email = Nothing

Set messagerie = Nothing

End Sub

pour effacer le contenu des lignes, j'ai fait la macro en automatique.

désolé je n'y avais pas pensé.

Bonjour Cluedo,

nouveau fichier Excel :

Pour ta 1ère demande : clique sur le bouton Clear ➯ c'est fait Alt F11 pour voir le code VBA, qui est sans doute plus court qu'avec l'enregistrement automatique !

Pour ta 2ème demande, désolé : j'connais pas l'VBA pour Outlook ; j'espère qu'un autre intervenant pourra t'aider ! bonne chance !

dhany

ok merci pour tout

Rechercher des sujets similaires à "quelquun ecrire petit code"