Excel : Macro pour copier/coller automatiquement des cellules [Résolu/Fermé]

Signaler
Messages postés
11
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
24 juillet 2017
-
Messages postés
11
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
24 juillet 2017
-
Bonjour,

Je suis novice sur excel j'ai besoin de votre aide !
J'ai besoin d'un code pour réaliser une macro (simple je pense pour ceux qui maitrisent le sujet), je vous explique :

J'ai 2 feuilles, DEVIS et PROJETS, et 1 tableau similaire sur chaque feuille

Sur la feuille DEVIS, j'ai donc un tableau qui répertorie tout un tas de demandes de clients. Mon but est de faire apparaître sur la feuille PROJET les demandes de devis qui se concrétisent en commande.
Ainsi j'aimerais pouvoir copier/coller les 6 première cellules de chaque ligne du tableau de la feuille DEVIS, si la 7ème cellule = "commande reçue"

Illustration brut : Sur feuille "DEVIS" si H4 = "Commande reçue" --> copier "B4:G4" --> coller sur feuille "Projet" en "B4:G4"

Et ainsi de suite pour chaque ligne 5,6,7,8...

J'espère que je suis assez clair, un grand merci par avance pour votre aide :)


8 réponses

Messages postés
9645
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
6 janvier 2021
2 011
Un exemple de ce qu'on peut faire
http://www.cjoint.com/c/GGvmW3Sqk4B

Cdlmnt
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

Messages postés
11
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
24 juillet 2017

C'est excellent ce que tu me proposes là !
Il y a juste un détail, les cellules sont collées en bas de mon tableau, le top serait qu'elles commencent dès la première ligne du tableau (ligne 4)

Mais je pense que c'est une manip' rapide ?

Un grand merci !
Messages postés
9645
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
6 janvier 2021
2 011
premier fichier
Tentative 1. Essaies de supprimer toutes les lignes formatées après la ligne 4 avant d'exécuter
Tentative 2. Dans le code de la procedure Transfer (Module 1), tu mets un point d'arrêt devant la ligne (dans la marge un gros point marron doit apparaitre)
liFP = Sheets(FP).Range(codeb & Rows.Count).End(xlUp).Row + 1
Ensuite tu lances un transfert, la macro va s'arrêter sur cette ligne. F8 pour passer à la ligne suivante, tu passes le curseur sur la variable liFP, c'est la première ligne dispo tu dis ...
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

Messages postés
9645
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
6 janvier 2021
2 011
deuxième fichier, normal, tu n'as pas copié le code du Module 1
1. Supprimes tes deux modules au nom bizarre
2. Insertion/Module, ça crée un Module 1
3. colles tout le code de mon Module 1
Messages postés
11
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
24 juillet 2017

C'est bon !
En fait le problème c'était le format tableau, j'ai convertit en plage normale et la macro fonctionne à merveille.

Et oui j'avais aussi bêtement oublié de copier le code dans le module.

Mille fois merci tu es au top :)
Messages postés
9645
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
6 janvier 2021
2 011
De rien

Si c'est fini, peux tu mettre le sujet à résolu (en dessous du titre de ton premier message)

Bon weekend
Messages postés
11
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
24 juillet 2017

Dernière chose !!

Que dois-je changer dans le code si je veux que la colonne à valider soit la colonne J (celle avec "commande validée" etc) ???

Désolé pour la relance...
Messages postés
9645
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
6 janvier 2021
2 011
Bonjour

Si j'ai compris ...
En B4 de la feuille PROJET
=SI(DEVIS!$H4="Commande reçue";DEVIS!B4;"")
attention au $ devant $H4
à recopier dans la plage B4:Gxx

Cdlmnt
Messages postés
11
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
24 juillet 2017

Bonjour,

Merci pour ta réponse.

C'est ce que j'ai fait dans un premier temps mais en fait mon problème est plus complexe.

En appliquant cette fonction à chaque cellule de mon tableau cela me permet de copier/coller les demande clients qui se sont convertis en commandes.

Cependant ça me fait un tableau avec plein de lignes vides car toutes les demandes de mes clients ne se transforment pas forcement en commande.

Il me faudrait donc en plus de cette formule, une macro qui me permette de supprimer les lignes vides du tableau en feuille "PROJETS" automatiquement... mais ça me paraît un peu dingue !

Sinon il faut que j'actualise le tri de mon tableau après chaque commande et ce n'est pas ce que je veux, il me faut un outil automatisé :p

J'espère que ce que je veux réaliser est possible ...
Messages postés
9645
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
6 janvier 2021
2 011
Quand on parle de macro, il est nécessaire d'y voir clair ...
Peux tu envoyer un bout de ton fichier anonymisé, mais avec la même structure que l'original,sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".

Cdlmnt
Messages postés
11
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
24 juillet 2017

Voici mon fichier excel : https://www.cjoint.com/c/GGvl7rSjmDs
Il y a eu une très légère modif depuis la publication de la discussion.

En espérant que tu pourras m'aider ! :)

Merci beaucoup
Messages postés
9645
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
6 janvier 2021
2 011
Pas très clair, deux façons de voir les choses au moins ...

Option 1.
Les données concernant un devis doivent se trouver exactement dans la même ligne dans les deux feuilles. Dans la feuille PROJET, on laisse les formules et on masque les lignes vides et on les affiche dès que "Commande reçue"
Option 2.
Chaque fois que "Commande reçue", on ajoute les données dans la feuille PROJET, à la suite des précédentes. Il n'y aura plus de formule ni de ligne vide dans la feuille PROJET.

A toi de voir
Messages postés
11
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
24 juillet 2017

L'option 2 me semble parfaite !

Comment s'y prend-t-on ?

Merci beaucoup
Messages postés
9645
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
6 janvier 2021
2 011
Il y a juste un détail, les cellules sont collées en bas de mon tableau, le top serait qu'elles commencent dès la première ligne du tableau (ligne 4)
Avec le fichier que je t'ai envoyé ?, parce que chez moi, le transfert commence bien en ligne 4
Si c'est avec ton fichier, vois si tu n'as pas oublié de vider la colonne B de la feuille PROJETS

Cdlmnt
Messages postés
11
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
24 juillet 2017

Oui sur ton fichier, je n'ai touché à rien pourtant

Et en mettant le code sur le mien, ça me dis "erreur de compilation, Variable non définie"
Et : "Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)" est surligné.

(Je précise que j'ai bien vidé mes colonnes)

Tu veux que je partage de nouveau mon fichier ou tu penses savoir d'où vient l'erreur ?

Merci pour ton aide
Messages postés
9645
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
6 janvier 2021
2 011
Oui sur ton fichier, je n'ai touché à rien pourtant
Je ne comprends pas, voilà ce que j'obtiens après un clic-clic sur la première Commande reçue
http://www.cjoint.com/c/GGvo7fDLhdB
j'ai mis une formule en A1 qui compte le nombre de valeurs en colonne B, il doit y avoir 1 si aucun transfert effectué

Envoies quand même le tien
Messages postés
11
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
24 juillet 2017

Lien de ton fichier : https://www.cjoint.com/c/GGvppV148Js
Regarde le résultat quand c'est moi qui double clic

Lien de mon fichier : https://www.cjoint.com/c/GGvptvZNa1s
As-tu le même message d'erreur ?

Si après ça tu ne rencontres pas les mêmes problèmes, c'est que ça vient surement de nos versions d'Excel nan ?
Messages postés
9645
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
6 janvier 2021
2 011
Que dois-je changer dans le code si je veux que la colonne à valider soit la colonne J (celle avec "commande validée" etc) ???
Si tu parles de la cellule qui lance la macro par un double-clic
Tu vas dans Module 1, en début de code, tu as des constantes qui décrivent ta configuration, que tu peux changer bien sûr (les placer ici, permet en cas de modification de ne pas toucher aux codes des procédures)
Dans la ligne , la constante cocliFD est la colonne attachée à ce clic-clic
Public Const cocliFD As String * 1 = "B"
Tu changes la valeur "B" par "J"

Cdlmnt
Messages postés
11
Date d'inscription
mercredi 19 juillet 2017
Statut
Membre
Dernière intervention
24 juillet 2017

Au top.

Je t'embête plus, merci beaucoup pour ton aide précieuse.

Bonne continuation :)