copier/coller en fonction de cellules variables

  • Initiateur de la discussion Initiateur de la discussion nicolas
  • 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 !

N

nicolas

Guest
bonjour le forum,

je vous joins un fichier en annexe.

je souhaiterais en selectionnant des cellules dans un tableau et en cliquant sur un bouton que ça aille chercher des valeurs dans un autre onglet et que que ça les colles dans les cellules sélectionnées.

mais il faudrait, que si on selectionne d'autres cellules, il y ait une translation des données sources.

si ce texte n'est pas clair, j'espère que le fichier explicatif l'est un peu plus.

merci d'avance.
 
Salut Nicolas,

J'avoue ne pas avoir compris grand chose à ton problème.

De plus, ton fichier n'est pas passé. Voir le lien suivant pour joindre un fichier (faire attention aux espaces, tirets, accents et à la taille) :

Lien supprimé

Donc reviens-nous avec un fichier avec des explications détaillées.

@+
 
Bonjour nicolas, tibo, le forum

Une proposition en pièce jointe.

le code :

Sub Bouton4_QuandClic()
Dim c As Range
Dim i As Byte

If Selection.Count <> 3 Or Selection(1).Column <> 3 Then Exit Sub

With Sheets('Feuil2')
&nbsp; &nbsp;
Set c = .Range('a2:a' & .Range('a65536').End(xlUp).Row).Find(Selection(1).Offset(0, -1))
&nbsp; &nbsp;
If Not c Is Nothing Then
&nbsp; &nbsp; &nbsp; &nbsp;
For i = 1 To 3
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Selection(i) = .Cells(c.Row, i + 1)
&nbsp; &nbsp; &nbsp; &nbsp;
Next i
&nbsp; &nbsp;
End If
End With

End Sub


salut
[file name=copie_20051026151204.zip size=10199]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/copie_20051026151204.zip[/file]
 

Pièces jointes

re-bonjour et merci à Tibo et Hevé,

j'ai mis du temps à répondre car je cherchais à adapter ce code à un de mes fichier et je n'y suis pas arrivé.

dans cet exemple, le '3' représente-il le nombre de colonnes du tableau et le offset(0, -1) fait -il référence à la colonne rang?


merci

nicolas
 
re

🙂


If Selection.Count <> 3 Or Selection(1).Column <> 3 Then Exit Sub


en clair, si le nombre de cellule dans la sélection est different de 3 ou si la colonne de la première cellule de la sélection est différent de C alors on arrete la macro.

cette ligne n'est là que pour controler que la plage sélectionnée fait bien 3 cellules et que celles-ci se trouvent bien en colonne c:e.

le fait qu'il y ait deux fois le chiffre 3 est pure coincidence.

selection(1).offset(0,-1) permet de trouver la cellule qui se trouve à droite de la sélection, donc dans ton cas la colonne rang.

voilà

salut
 
re-bonjour

je suis vraiment désolé mais je n'arrive pas à l'adapter à mon fichier.

j'ai joint un fichier semblable au premier mais légèrement différent pour qu'il n'y ait pas de coincidences.
De cette manière, le code serait plus compréhensible.

merci encore et désolé

[file name=copie2.zip size=10159]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/copie2.zip[/file]
 

Pièces jointes

re nicolas, tibo, le forum

Une nouvelle macro commentée, en espérant que ceci t'aidera.

Si tu n'arrivais pas à l'adapter encore à ton fichier, dis le moi, j'essayerai de trouver quelque chose de plus .....(à toi de choisir le mot 🙂 )

Sub Bouton4_QuandClic()
Dim c As Range
Dim i As Byte

'ligne de controle pour s'assurer que la sélection fait bien 4 cellules
'et qu'elle commence bien en colonne C (3)
If Selection.Count <> 4 Or Selection(1).Column <> 3 Then Exit Sub

'avec la feuille 2
With Sheets('Feuil2')

&nbsp; &nbsp;
'initialise la variable c (set c=)
&nbsp; &nbsp;
'en recherchant (.find)
&nbsp; &nbsp;
'dans la plage k2... (range('k2...)
&nbsp; &nbsp;
'...jusqu'a la derniere cellule occupé (range('k65536').end(xlup).row
&nbsp; &nbsp;
'la valeur de la cellule se trouvant 7 colonnes à droite de la premiere cellule de sélection (selection(1).offset(0,7))
&nbsp; &nbsp;
Set c = .Range('k2:k' & .Range('k65536').End(xlUp).Row).Find(Selection(1).Offset(0, 7))
&nbsp; &nbsp;
&nbsp; &nbsp;
'si la variable C n'est pas vide alors....
&nbsp; &nbsp;
If Not c Is Nothing Then
&nbsp; &nbsp; &nbsp; &nbsp;
'on fait une boucle de 1 à 4 (parce que&nbsp; 4 cellules à remplir)
&nbsp; &nbsp; &nbsp; &nbsp;
'pour i=1 jusqu'a 4
&nbsp; &nbsp; &nbsp; &nbsp;
For i = 1 To 4
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
'la cellule(i) de la sélection = la cellule ligne (c.row), colonne(i+1)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Selection(i) = .Cells(c.Row, i + 1)
&nbsp; &nbsp; &nbsp; &nbsp;
'prochain i
&nbsp; &nbsp; &nbsp; &nbsp;
Next i
&nbsp; &nbsp;
'fin de condition
&nbsp; &nbsp;
End If
'fin de travail avec la feuille 2
End With

End Sub


salut
 
Bonjour le forum

C'est bon, ça marche, après moultes difficultés, j'y suis enfin arrivé.

merci beaucoup à Hervé et tous les membres du forum pour leur aide, leur patience et leur dévouement.

sûrement à tout à l'heure pour une nouvelle problématique!!!!!!

🙂
 
- 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

Retour