Copie de cellule vers autre feuille avec condition

Bonjour à tous,

Je suis "débutant" en vba dans le sens ou j'ai vraiment du mal à comprendre et reconstruire la syntaxe des codes....

Bref. Je veux pouvoir copier des cellules d'une feuille vers une autres feuilles et pas forcément au meme endroit....

Je joint mon fichier pour que celma soit plus clair.

Voici le "code" que j'ai essayé de produire. Pas sur que la syntaxe soit bonne ni meme la façon de faire en fait . Le code est présent ds le fichier Excel fournis.

=

Sub CommandButton1_Click()

' macro appelé via un bouton placé sur chaque ligne de la feuille Base_donnees => cellule BY

For thislign =

If thislign.cell(B)= "divers"

'Si pour cette ligne la cellule E est divers, on copiera les données vers la feuille formulaire divers

Worksheets("Base_donnees").cell("F").Value.Copy

Worksheets("formulaire divers").Range("B3").Paste

'La valeur de la cellule F (ici nom de l'agent 1) sera copié vers la cellule B3 de la feuille formulaire divers

Worksheets("Base_donnees").cell("G").Value.Copy

Worksheets("formulaire divers").Range("B4").Paste

'La valeur de la cellule G (ici nom de l'agent 1) sera copié vers la cellule B4 de la feuille formulaire divers

Worksheets("Base_donnees").cell("H").Value.Copy

Worksheets("formulaire divers").Range("B4").Paste

'La valeur de la cellule H (ici nom de l'agent 1) sera copié vers la cellule B5 de la feuille formulaire divers

Worksheets("Base_donnees").cell("I").Value.Copy

Worksheets("formulaire divers").Range("B7").Paste

'La valeur de la cellule I (ici territoire) sera copié vers la cellule B7 de la feuille formulaire divers

Worksheets("Base_donnees").cell("j").Value.Copy

Worksheets("formulaire divers").Range("B8").Paste

'La valeur de la cellule J (ici pole) sera copié vers la cellule B8 de la feuille formulaire divers

Worksheets("Base_donnees").cell("k").Value.Copy

Worksheets("formulaire divers").Range("B9").Paste

'La valeur de la cellule K (ici groupe) sera copié vers la cellule B9 de la feuille formulaire divers

Worksheets("Base_donnees").cell("l").Value.Copy

Worksheets("formulaire divers").Range("B10").Paste

'La valeur de la cellule L (ici Correspondant) sera copié vers la cellule B10 de la feuille formulaire divers

End If

Else

If thislign.cell(B) = "Technique"

'Si pour cette ligne la cellule E est technique, on copiera les données vers la feuille formulaire technique

Worksheets("Base_donnees").cell("F").Value.Copy²

Worksheets("formulaire technique").Range("B3").Paste

'La valeur de la cellule F (ici nom de l'agent 1) sera copié vers la cellule B3 de la feuille formulaire technique

Worksheets("Base_donnees").cell("G").Value.Copy

Worksheets("formulaire technique").Range("B4").Paste

'La valeur de la cellule G (ici nom de l'agent 1) sera copié vers la cellule B4 de la feuille formulaire technique

Worksheets("Base_donnees").cell("H").Value.Copy

Worksheets("formulaire technique").Range("B4").Paste

'La valeur de la cellule H (ici nom de l'agent 1) sera copié vers la cellule B5 de la feuille formulaire technique

Worksheets("Base_donnees").cell("I").Value.Copy

Worksheets("formulaire technique").Range("B7").Paste

'La valeur de la cellule I (ici territoire) sera copié vers la cellule B7 de la feuille formulaire technique

Worksheets("Base_donnees").cell("j").Value.Copy

Worksheets("formulaire technique").Range("B8").Paste

'La valeur de la cellule J (ici pole) sera copié vers la cellule B8 de la feuille formulaire technique

Worksheets("Base_donnees").cell("k").Value.Copy

Worksheets("formulaire technique").Range("B9").Paste

'La valeur de la cellule K (ici groupe) sera copié vers la cellule B9 de la feuille formulaire technique

Worksheets("Base_donnees").cell("l").Value.Copy

Worksheets("formulaire technique").Range("B10").Paste

'La valeur de la cellule L (ici Correspondant) sera copié vers la cellule B10 de la feuille formulaire technique

End If

End Else

End Sub

'j'ai dans le meme fichier plusieurs feuilles

'je veux copier le contenu de la cellule E5, feuille base_donnees, dans la cellule B2, feuille formulaire divers ( uniquement concernant la ligne ou le bouton d'appel de macro est placé )

'Je ne sais pas si cette solution est faisable, ni meme si thislign existe....

Merci d'avance pour l'aide apporté et le temps passé.

Cordialement,

Bonjour

Une proposition à tester.

Te convient-elle ?

On pourrait aussi remplacer par un double-clic sur une cellule de la ligne concernée...

Bye !

Bonjour,

Merci c'est effectivement ce que je cherche à faire. Par contre en ce moment cela ce copie dans le mauvais formulaire. Il suffit surement juste de modifier le code. De plus, les formes roses expliquant le fonctionnement, et se trouvant aussi sur les formulaires peuvent-elles etre supprimées?

Sur le long terme je vais me retrouver avec des centaines de lignes, je pense donc mettre le bouton reporter sur chaque bout de ligne. C'est faisable?

Restant à disposition,

Cordialement.

Bonjour

Nouvelle version à tester.

Tu écris :

les formes roses expliquant le fonctionnement, et se trouvant aussi sur les formulaires peuvent-elles etre supprimées?

C'est fait : il suffit de faire :

* clic droit sur la forme

* clic gauche sur la bordure de la forme pour sélectionner la forme elle-même et non plus le texte qui est à l'intérieur

* clic sur la touche Suppr

je pense donc mettre le bouton reporter sur chaque bout de ligne. C'est faisable?

C'est faisable en copiant le bouton là où tu veux :

* clic droit sur le bouton

* clic gauche sur le bord du bouton : l'index de la souris devient 4 petites flèches disposées en croix

* on peut alors déplacer le bouton en le faisant glissser, bouton de la sours enfoncé

* Ou le dupliquer en gardant en plus la touche Ctrl enfoncée.

Mais il vaut mieux (à mon humble avis) fractionner ton écran en figeant les 2 premières colonnes figées avec un ou des boutons positionnés sur ces lignes

Et n'oublie pas que c'est la ligne où il y a une cellule sélectionnée qui sera prise en compte pour le report des données.

OK ?

Bye !

Ouiii , merci c'est parfait

je vais etudier le code pour le compléter avec toutes mes données.

Merci encore beau boulot !

Cordialement

Bonjour,

J'ai mis à jour le code et ça a l'air de fonctionner.

Cependant, lors de la copie des cellules, la police de destination change. ( Ma mise en forme des feuilles formation divers etc se modifie. )

Comment cela peut-il etre changé?

par exemple : feuille Divers => cellule B2 , garder la mise en forme de la cellule A2 etc

Restant à disposition,

Cordialement,

Bonjour

Quand tu veux copier la cellule E , ligne ln, et la coller dans la cellule B2, tu peux faire :

Cells(ligne, "E").Copy fd.Range("B2")

Dans ce cas, tu copies tout ce qu’il y avait dans la cellule copiée : formule et format et tu le colles dans la cellule de destination où le format existant sera donc remplacé.

C’est ce qui se passe avec la macro.

Pour conserver le format de la cellule de destination, tu peux faire :

Cells(ligne, "E").Copy
 fd.Range("B2").pastespecila xlpasteValues

ou encore

fd.Range("B2")  = Cells(ligne, "E")

Compte tenu du nombre important de lignes de code concernées dans ta macro pour obtenir le résultat souhaité, je te laisse le soin de les modifier.

Bye !

Merci !

Rechercher des sujets similaires à "copie feuille condition"