CopierCollerParMacroEnFonctionD'UneValeur

  • Initiateur de la discussion Initiateur de la discussion Moa
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
101
Réponses
5
Affichages
406
  • Question Question
Microsoft 365 Catégorisation
Réponses
5
Affichages
544
Retour