cs_maxashtar
Messages postés10Date d'inscriptionjeudi 22 mai 2008StatutMembreDernière intervention24 mai 2008
-
22 mai 2008 à 15:52
cs_maxashtar
Messages postés10Date d'inscriptionjeudi 22 mai 2008StatutMembreDernière intervention24 mai 2008
-
24 mai 2008 à 10:22
Bonjour à tous,
je suis débutant très très newbie sur VBA excel.
j'ai besoin de connaitres les codes suivants , je me place sur n'importe quelle cellule et je lance la macro :
1) connaitre sa position pour la sauvegarder car je vais plus tard retourner sur cette cellule
2) copier sa valeur X
3) dans une autre feuille, ça lance recherche de la cellule correspondant à la valeur X
apres j'ai d'autres trucs que je devrais y arriver.
cs_maxashtar
Messages postés10Date d'inscriptionjeudi 22 mai 2008StatutMembreDernière intervention24 mai 2008 22 mai 2008 à 16:07
Salut,
franchement je capte pas du tout, désolé je suis nul !!
je dois commenecer par Activecell.select
apres je mets Activecell.Address et j'ai erreur en test
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 22 mai 2008 à 16:14
j'ai besoin de connaitres les codes suivants , je me place sur n'importe quelle cellule et je lance la macro :
1) connaitre sa position pour la sauvegarder car je vais plus tard retourner sur cette cellule
donc
Dim sAddress as string
sAddress = Activecell.Address
MsgBox sAddress
cela est censé te retourn ée l'adresse de la cellule active (donc, ex. pour A1 : $A$1)
2) copier sa valeur X
donc pour une veleur de tyoe chaine de caractères :
Dim sValue As String
'ou, pour un nombre décimale
Dim dValue As Double
sValue = Activecell.Value
Msgbox sValue
cela te retourne ce que contient la cellule qui est activé
cs_maxashtar
Messages postés10Date d'inscriptionjeudi 22 mai 2008StatutMembreDernière intervention24 mai 2008 22 mai 2008 à 16:47
c'est la loose totale, je nage dans le cosmos !!
enfin bref je vais expliquer le but de cette macro, ça sera même plus simple à la faire...vu le niveau de vos compétences
- dans un tableau 1, je dois cliquer sur une cellule X => valeur 1000 par exemple,
- dans le tableau 2, je recherche cette valeur 1000 donc tombe sur la cellule Y puis sur la colonne d'a côté je copie la cellule Z de valeur 50 (par ex)
- puis retourne sur le tableau 1 pour y coller à côté de la cellule X cette valeur 50.
pour choper les cellules d'a côté j'ai trouvé c'est par ex ActiveCell.Offset(0, -1).Select (déplace de 1 colonne vers la gauche).
Merci de votre aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 22 mai 2008 à 17:25
salut,
c'est assez simple, tu peux faire ta propre fonction que tu peux réutiliser dans Excel, pour faire ainsi, insère un Module dans ton VBProject (dans Alt F11) et colle ceci :
Option Explicit
Function ImportValue(ByVal myCell As Range) As
String
ImportValue = Sheets(2).Cells.Find(myCell.Value).Offset(0, -1).Value
End Function
Maintenant, si j'ai bien compris, tu mets sur la feuille 1, à côté de la cellule contenant la valeur a rechercher dans la seconde feuille :
=ImportValue(x)
x veut en fait dire que tu seléctionne la cellule d'à côté, donc celle contenant (pour l'exemple) 1000.
Tu auras 50 d'inscrit (toujours par rapport à ton exemple)
cs_maxashtar
Messages postés10Date d'inscriptionjeudi 22 mai 2008StatutMembreDernière intervention24 mai 2008 23 mai 2008 à 09:05
Salut,
Oui dans VBA je sais insérer un module mais c'est écrire les codes où je bloque, j'ai pas du tout étudié les codes pour dire...
bon j'ai collé
Option Explicit
Function ImportValue(ByVal myCell As Range) As String
ImportValue = Sheets(2).Cells.Find(myCell.Value).Offset(0, -1).Value
End Function
mais ça bloque, j'ai fais un excel simplifié pour expliquer ce que je veux
le fichier sur mon espace ftp
http://jackbauer92.free.fr/macro.xls
http://jackbauer Merci de votre aide
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 23 mai 2008 à 14:00
ok j'ai récupéré ton fichier simple.
J'ai bien compris le sytème de recherche mais maintenant as-tu un fichier plus complet (pour parer à toute éventualité) et gérer les différentes longueurs de listes possibles ?
Je regarderai ça fin d'aprem ou cette nuit
cs_maxashtar
Messages postés10Date d'inscriptionjeudi 22 mai 2008StatutMembreDernière intervention24 mai 2008 23 mai 2008 à 14:33
Salut,
merci c'est très sympa à toi de m'aider ;)
si on veut faire plus complet :
- j'ai environ 1500 lignes
- chaque tableau est dans un fichier différent,
- dans l'ex, quand la valeur 50 est copié droite de 1000 c'est deux colonnes à droite de 1000 (pas une comme l'ex).
- une fois la macro terminée, que le curseur se place en dessous de 1000 pour lancer à nouveau (si besoin) la macro, et ainsi de suite....comme j'ai 1500 lignes à vérifier ça m'évitera de me placer sur la cellule avant de lancer la macro.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 23 mai 2008 à 15:25
c'est bon, j'ai récupéré tes 2 fichiers.
Juste une précision.
dans le 1er classeur, il y a des valeurs, sous Source (colonne N) :
<col style=\"width: 60pt;\" width=\"80\" />----
1000, ----
1231, ----
1038
par contre dans ton second classeur, les valeurs de gauche ne vont que de 5000 à 6200 (en gros).
Comment faire dans cette situation ?
Un peu plus bas, dasn source, tu as
<col style=\"width: 60pt;\" width=\"80\" />----
101467, ----
101541
Eux, ces nombres ne sont plus à gauche mais à droite dans le second tableau, comment faire ?
Allez, une dernière, je suppose que si on retombe sur NON, on ne fait rien ?
cs_maxashtar
Messages postés10Date d'inscriptionjeudi 22 mai 2008StatutMembreDernière intervention24 mai 2008 23 mai 2008 à 15:44
Oui pardon, c'est vrai que les exemples ne sont pas très réels...j'ai refait la feuille 1 pour que ça soit nickel (re dl le fichier).
pour résumer :
colonne N de Feuille 1 = colonne B de la feuille 2
colonne P de Feuille 1 = colonne A de la feuille 2
et, si on retombe sur NON, on ne fait rien ? => exact.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 24 mai 2008 à 00:14
Voilà,
je t'ai fait un bout de code.
Je te conseille de faire "Enregistrer Macro", tu lui affectes une touche de raccourci (pour l'exemple, j'ai pris [CTRL m] et tu arrête la macro.
T'as plus qu'à y mettre ce bout de code, pense à vérifier que ton fichier soit toujours nommé feuille2.xls et qu'il se trouve dans le même répertoire que feuille1.xls.
Option Explicit
Sub Search_Datas()
' Touche de raccourci
du clavier: Ctrl+m
Dim FileToSearch As String, sValueToSearch As String, sValueToImport As
String
Dim iLineIn As Integer
cs_maxashtar
Messages postés10Date d'inscriptionjeudi 22 mai 2008StatutMembreDernière intervention24 mai 2008 24 mai 2008 à 10:22
Yeahhhh super merci
j'ai testé, et si je peux me permettre, j'ai trouvé qq erreurs :
- quand je teste 1000, ça trouve 5487 alors que c'est 50 ; pour les autres j'en ai testé pas mal ça marche !!
alors que 100096 donne 5487 qui est normal, est ce le début 1000 qui ferait ça ?
- CTRL+M marche pas, je fais executer macro et ça là c'est ok, à la rigueur je sais créer un bouton et l'associer à Sub macro1() mais là c'est un peu différent, non ?
- c'est possible de laisser la feuille 2 ouverte ? car la macro la ferme à la fin