Besoin d'aide pour une macro sous Excel [Résolu]

Signaler
Messages postés
10
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
24 mai 2008
-
Messages postés
10
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
24 mai 2008
-
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

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
10
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
24 mai 2008

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
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
10
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
24 mai 2008

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

 
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
10
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
24 mai 2008

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
Messages postés
10
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
24 mai 2008

bizarre comment ça a écrit le lien du fichier
je remets http://jackbauer92.free.fr/macro.xls
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
10
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
24 mai 2008

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 ;))
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
10
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
24 mai 2008

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 ;)
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
10
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
24 mai 2008

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
Messages postés
10
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
24 mai 2008

Ha oui et si c'était possible de conserver les couleurs des lignes sur la feuille 1.
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
ok, je vois ça tout à l'heure
@++

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

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