Besoin d'aide pour une macro sous Excel

Résolu
cs_maxashtar Messages postés 10 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 24 mai 2008 - 22 mai 2008 à 15:52
cs_maxashtar Messages postés 10 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 24 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.

Merci

17 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
22 mai 2008 à 15:57
salut,

1/ sAddress = Activecell.Address
2/ sValue = Activecell.Value
3/ utilise la fonction Find

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
3
cs_maxashtar Messages postés 10 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 24 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

peux tu m'expliquer plus en détails ...

Merci
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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é

3) dans une autre feuille, ça lance recherche de la cellule correspondant à la valeur X
Pour la fonction Find, aide toi de l'aide en ligne et de ses exemples, ainsi que mon sniippet :
http://www.codyx.org/snippet_rechercher-adresses-cellules-excel-contenant-mot-cle_248.aspx

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
cs_maxashtar Messages postés 10 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 24 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

 
0

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

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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

~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

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)

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
cs_maxashtar Messages postés 10 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 24 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
0
cs_maxashtar Messages postés 10 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 24 mai 2008
23 mai 2008 à 09:07
bizarre comment ça a écrit le lien du fichier
je remets http://jackbauer92.free.fr/macro.xls
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
cs_maxashtar Messages postés 10 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 24 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.

Encore merci et bon week end ;))
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
23 mai 2008 à 14:40
ok .
Met le nouveau fichier sur ton ftp, je te le récupère (et mets moi le lien stp)
En cas je vais voir ca ce soir et te tiens au courant

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
cs_maxashtar Messages postés 10 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 24 mai 2008
23 mai 2008 à 15:08
Ok j'ai mis deux fichiers feuille 1 et feuille 2
je pense que tu vas tout comprendre ;))

http://jackbauer92.free.fr/feuille1.xls
http://jackbauer92.free.fr/feuille2.xls

Merci ;)
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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 ?

Merci de tes précisions
@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
cs_maxashtar Messages postés 10 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 24 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.

 Merci
0
cs_maxashtar Messages postés 10 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 24 mai 2008
23 mai 2008 à 15:46
Ha oui et si c'était possible de conserver les couleurs des lignes sur la feuille 1.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
23 mai 2008 à 16:31
ok, je vois ça tout à l'heure
@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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

FileToSearch = ThisWorkbook.Path & "\feuille2.xls"
sValueToSearch = ActiveCell.Value
iLineIn = ActiveCell.Row

Workbooks.Open FileToSearch
Range("B:B").Select
Selection.Find(sValueToSearch).Activate
sValueToImport = ActiveCell.Offset(0, -1)
ActiveWorkbook.Close False

Cells(iLineIn, 16).Value = sValueToImport
Cells(iLineIn + 1, 14).Activate

End Sub
~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
cs_maxashtar Messages postés 10 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 24 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

Encore merci
0
Rejoignez-nous