VBA copier la valeur d'une cellule tableau [Résolu/Fermé]

Signaler
Messages postés
12
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
4 mai 2010
-
Messages postés
1144
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
18 août 2014
-
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

10 réponses

Messages postés
1144
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
18 août 2014
58
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
Messages postés
17380
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 092
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+

Messages postés
12
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
4 mai 2010

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.
Messages postés
1144
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
18 août 2014
58
cela n'a pas l 'air d 'etre compliqué mais je comprend pas tro si tu peux poster ton fichier et donné un exemple
Messages postés
12
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
4 mai 2010

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

	
Messages postés
1144
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
18 août 2014
58
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
Messages postés
1144
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
18 août 2014
58
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
Messages postés
12
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
4 mai 2010

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?
Messages postés
1144
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
18 août 2014
58
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
Messages postés
12
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
4 mai 2010

Ca tourne IMPEC,

Encore merci pour tout!
Messages postés
1144
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
18 août 2014
58
de rien @+