Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

CopierCollerParMacroEnFonctionD'UneValeur

M

Moa

Guest
Voilà :

J'ai fait une petite macro (avec l'assistant...hihihi), qui sélectionne 3 cellules adjacentes A1, B1, C1, qui copie le contenu, et va faire un collage spécial "valeur", dans une autre feuille, à un endroit bien précis.

Jusque là rien de bien compliqué, ça marche.

Mais je voudrais ajouter une petite option,(qui elle doit être écrite...hahaha)

En fait je voudrais rajouter une valeur variable de 1 à 10 dans ma feuille de départ.

Et en fonction de cette valeur, de changer la destination de mon collage.

En + clair si D2=1 alors copier valeur des cellules A1,B1,C1 en E5,F5,G5
si D2 = 2 alors copier valeur des cellules A1,B1,C1 en E6,F6,G6

etc...avec 3, 4, 5, 6.

Un petit avantage, peut-être pour simplifier la formule, est que les colonnes où doivent s'afficher les valeurs, sont toujours les mêmes, seules changent les lignes d'arrivées.

Merci d'avance de votre aide

Tout codeVba serait le bienvenu...hihihi...

@ +

Moa
 
@

@+Thierry

Guest
Bonjour Moa,

Une Première soluce avec Select Case qui est très simple à utiliser....
SOLUTION 1 ======================================
Option Explicit
Sub Moa()
Dim D2 As Integer
D2 = Sheets("Feuil1").Range("D2").Value
Select Case D2
Case 1
Sheets("Feuil2").Range("E5:G5").Value = _
Sheets("Feuil1").Range("A1:C1").Value
Case 2
Sheets("Feuil2").Range("E6:G6").Value = _
Sheets("Feuil1").Range("A1:C1").Value
Case 3
Sheets("Feuil2").Range("E7:G7").Value = _
Sheets("Feuil1").Range("A1:C1").Value
Case 4
Sheets("Feuil2").Range("E8:G8").Value = _
Sheets("Feuil1").Range("A1:C1").Value
Case 5
Sheets("Feuil2").Range("E9:G9").Value = _
Sheets("Feuil1").Range("A1:C1").Value
Case 6
Sheets("Feuil2").Range("E10:G10").Value = _
Sheets("Feuil1").Range("A1:C1").Value
End Select
End Sub


SOLUTION 2 ======================================
En déclarant une variable "D2" + 4 (si cette règle est rééllement applicable comme dans ton exemple... Si D2 = 1 => E5 / Si D2 = 2 => E6... etc etc soit une différence de QUATRE...

Option Explicit
Sub Moa()
Dim D2 As Integer
Dim MoaVariable As Integer
D2 = Sheets("Feuil1").Range("D2").Value
MoaVariable = D2 + 4
Sheets("Feuil2").Range("E" & MoaVariable & ":G" & MoaVariable).Value = _
Sheets("Feuil1").Range("A1:C1").Value
End Sub

Voilà c'est pas bien compliqué...
Bon Dimanche Moa
@+Thierry
 
A

andré

Guest
Salut Moa,

N'est-il pas plus simple de sélectionner la cellule de la feuille dans laquelle tu veux que la copie soit effectuée et de lancer ta macro depuis cette cellule ?

André.
 
M

Moa

Guest
Il y a un problème, avec la première soluce :

"L'indice n'appartient pas à la sélection"

Sur cette ligne :

D2 = Sheets("Dev").Range("B3").Value

En B3, je met mon chiffre soit 1 ou 2 ou 3 etc...

J'ai changé D2 en B3

Enfin bref, j' y arrive pas.

André, j'aurais bien aimé, d'abord sélectionner, les cases réceptrices, mais dans mon cas, il est préfèrable de faire autrement.

Merci qd même de l'idée

Merci Thierry

@ +

Moa
 
M

Moa

Guest
Ca y est ça marche.

J'ai utilisé la première soluce, je ne sais pas ce que j'ai fait, la première fois,
j'ai pourtant fait un copier collé d ta formule, comme pour la deuxième fois, en changeant seulement D2 partout en B3, et renommant les feuilles etc...

Bon, ça marche, et en plus, j'ai compris le fonctionnement de cette macro, puisque je lui ai rajouté un petit plus.

Encore merci à Toa

@ +

Moa
 

Discussions similaires

Réponses
5
Affichages
491
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…