VBA copier la valeur d'une cellule tableau

Résolu/Fermé
Slyy Messages postés 12 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 4 mai 2010 - 14 févr. 2010 à 10:07
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 - 14 févr. 2010 à 19:51
Bonjour,

Est-il possible, à l'aide d'une macro, de copier la valeur d'une cellule contenue dans un tableau en fonction du nom de la colonne du tableau et du nom de la ligne du tableau rentrés par l'utilisateur (2 inputbox) ?
La valeur de la cellule choisie est ensuite collée dans une autre cellule de la feuille hors du tableau.

Si oui, par quelle fonction dois-je passer?

Merci à tout ceux qui pourront m'aiguiller.

Slyy
A voir également:

10 réponses

moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
14 févr. 2010 à 10:40
slt
via une macro oui
on va dire que tu veux copier sur la ligne 100 colonne 5


i = inputbox ("quel ligne voulez vous copiez?")
ii= nputbox ("quel colonne voulez vous copiez?")
cells(100,5)=cells(i,ii)

voila tu as le principe
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
14 févr. 2010 à 11:44
Bonjour,
Mais tu peu aussi employer la fonction InputBox d'excel pour te renvoyer la sélection. et ensuite la copier.
Exemple
Sub Copier()
Dim Adresse As Range
    'en supposant que tu veux copier en A10
    Set Adresse = Application.InputBox("Choisissez la sélection que vous voulez copier", "Copie cellule(s)", Type:=8)
    Adresse.Copy Range("A10")
End Sub

A+

0
Slyy Messages postés 12 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 4 mai 2010
14 févr. 2010 à 13:14
Merci pour vos precieux conseils.

Par contre dans ma macro, la ligne et la colonne ne correspondent pas à des cases excel (comme par exemple 100 et 5) mais à des caractères spécifiques à mon tableau.

Dans mon tableau, il s'agit de référence 1 à 8 en colonne (ce qui correspond à une recherche de la colonne H à la colonne W dans la feuille) et des types de voitures en ligne (coupé, cabriolé...) ce qui correspond à une recherche de la ligne 28 à 43.
L'utilisateur doit donc remplir d'abord la référence (N°1 à 8) et ensuite remplir le type de voiture qu'il souhaite.

Et c'est avec ces données que je dois trouver la valeur de la cellule corespondant à la référence et au type de voiture.

Merci encore.
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
14 févr. 2010 à 14:07
cela n'a pas l 'air d 'etre compliqué mais je comprend pas tro si tu peux poster ton fichier et donné un exemple
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Slyy Messages postés 12 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 4 mai 2010
14 févr. 2010 à 15:09
Tout d'abord je tiens à te remercier moiced59 pour ton aide. Je ne suis pas arrivé à poster mon fichier excel sur le comentaire donc je le met dans ce message ci-dessous.

Dans cet exemple, seulement 6 types de voitures ont été rentrés sur les 16 possibilités du tableau et il y a 7 références sur les 8 possibles.

J'ai donc ce tableau sur ma feuille.

Le premier inputbox demande à l'utilisateur la référence voiture (par exemple 3) ensuite le second inputbox demande le type de voiture (par exemple Coupé).
La macro copie la valeur contenue dans la case correspondante à la demande (ici 2,23) et la copie dans une case de la feuille (par exemple C62)
RefVoitur  1	2	3	4	5	6	7	8
TypeVoitur								
Berline	4,87	3,00	4	4,00	5,70	3,00	3,87	0,00
Coupé	8,32	5,14	2,23	4,32	4,45	9,90	7,54	0,00
Cabriolé5,56	8,54	4,12	6,32	8,24	7,12	5,12	0,00
CC	2,12	5,12	5,45	6,54	8,77	5,45	8,32	0,00
Monospace9,54	6,23	4,75	5,21	9,25	8,25	6,24	0,00
Sport	8,54	6,54	8,45	6,97	7,45	5,84	9,21	0,00
0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00
0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00
0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00
0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00
0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00
0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00
0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00
0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00
0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00
0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00	0,00

	
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
14 févr. 2010 à 15:49
okk c bien ca que je pensais que tu cherchais :

i = inputbox ("quel reference recherchez vous?")
ii= nputbox ("quel type de voiture recherchez vous?")

col = 2
do until topmaj = false or colon <15

if cells(1,col) = i then
y = col
topmaj = true
else
col = col +1
end if
loop
if col = 15 then exit sub

lig = 2
do until topmaj = false or lign < 200
if cells(lig,col) = ii then
cells(62,3) = cells(lig,col)
top maj = true
exit sub
else
lig = lig +1
end if
loop
if lig = 200 then msgbox "aucune concordance trouvé"

voila g pas testé si il y a des erreur hesite pas
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
14 févr. 2010 à 16:18
Voila g tester et modifier les erreur

i = InputBox("quel reference recherchez vous?")
ii = InputBox("quel type de voiture recherchez vous?")

col = 2
topmaj = False
col = 2
Do Until topmaj = True Or col > 15

If Cells(1, col).Value = Val(i) Then
y = col
topmaj = True
Else
col = col + 1
End If
Loop
If col = 15 Then Exit Sub

topmaj = False
lig = 1
Do Until topmaj = True Or lign > 200
tete = Cells(lig, 1)
If tete = ii Then

Cells(62, 3) = Cells(lig, col)
topmaj = True
Exit Sub
Else
lig = lig + 1
End If
Loop
If lig = 200 Then MsgBox "aucune concordance trouvé"
End Sub
0
Slyy Messages postés 12 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 4 mai 2010
14 févr. 2010 à 18:27
Excellent!

Par contre j'ai encore un petit soucil.

Dans ma feuille excel, les références prennent chacune 4 cases excel (fusion de 2 lignes et de 2 colonnes).
Du coup les 8 références du tableau vont de la colonne H à la colonne W (soit 16 colonnes en tout) et sont positionnées sur les lignes 2 et 3 de ma feuille.

J'ai essayé de modifier ta macro en gardant la structure mais ca ne marche pas.
Je pensais qu'en changeant le "col = col + 1" en "col = col + 2" ca incrémenterai correctement mais c'est pas ca.

Aurais-tu une solution?
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
14 févr. 2010 à 18:56
re

Dc si t cellule sont fusionner c la colonne de gauche qui porte le nom des donné et la cellule du haut
dc le code doit fonctionner com il est

tu doit commencé avec un col = 8 mais tu dois allé jusque 24 8 + 2x8 colonne
col = 2
Do Until topmaj = True Or col > 24
0
Slyy Messages postés 12 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 4 mai 2010
14 févr. 2010 à 19:50
Ca tourne IMPEC,

Encore merci pour tout!
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
14 févr. 2010 à 19:51
de rien @+
0