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
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
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:
- VBA copier la valeur d'une cellule tableau
- Tableau word - Guide
- Tableau ascii - Guide
- Tableau croisé dynamique - Guide
- Comment copier une vidéo youtube - Guide
- Aller à la ligne dans une cellule excel - Guide
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
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
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
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
14 févr. 2010 à 11:44
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
A+
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+
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
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.
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.
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
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
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
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)
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
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
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
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
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
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
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
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
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?
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?
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
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
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
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
14 févr. 2010 à 19:50
Ca tourne IMPEC,
Encore merci pour tout!
Encore merci pour tout!
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
14 févr. 2010 à 19:51
de rien @+