[Catégorie modifiée VB6 --> VBA] Problème avec les boucles VBA

luge29 Messages postés 6 Date d'inscription mardi 1 juin 2010 Statut Membre Dernière intervention 7 juin 2010 - 3 juin 2010 à 15:28
luge29 Messages postés 6 Date d'inscription mardi 1 juin 2010 Statut Membre Dernière intervention 7 juin 2010 - 7 juin 2010 à 14:26
Bonjour,
Je ne maîtrise pas bien les algorithmes et je voudrais savoir si quelqu'un connaît une boucle VBA qui recherche dans la colonne G, une cellule égale à la cellule A1, et qui renvoie alors en L1, la cellule I de la ligne correspondante.
Ex : si A1=G24 alors on colle I24 en L1.

Puis que l'opération se répète pour les cellules A2, A3, ? A1000.
Si quelqu'un a ça en stock, merci de me contacter

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 juin 2010 à 20:36
Salut
Utilise l'enregistreur de macro pour connaitre le code permettant une recherche, tu pourras la paramétrer ensuite avec le contenu de ta cellule A1.

G24 --> I24 : Voir Offset sur ta cellule

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
4 juin 2010 à 09:40
Bonjour,

Jack te propose d'utiliser la fonction FIND .. et il a raison.

Par contre, en passant par l'enregistreur de macros, le code retourné ne te permettra pas de l'utiliser tel quel.

Voici une fonction que je me suis écrit afin de faire des recherches (bien sur.. tu pourras l'adapter à tes besoins ).

Function cherchC(nomF As String, valCherch As String) as integer
'********************************************************** 
' recherche la valeur 'valCherch' et nous indique le 
' N° de ligne et de Colonne où elle se trouve VcLig / VcCol 
'********************************************************** 
Dim vc As Variant 
Sheets(nomF).Activate 
Sheets(nomF).Cells(1, 1).Activate 
Set vc = Cells.Find(what:=valCherch, lookAt:=xlWhole, After:=ActiveCell, SearchOrder:=xlByColumns, SearchDirection:=xlNext, LookIn:=xlValues, MatchCase:=False, SearchFormat:=False) 
If Not vc Is Nothing Then 
 cherchC= vc.Row 
End If 
End Function 


Cette fonction te retourne le numéro de ligne...
tu lui passe le contenu de A1 en parametre : valCherch = Range("A1").value et le tour est joué.



Cordialement,
Jordane,
0
luge29 Messages postés 6 Date d'inscription mardi 1 juin 2010 Statut Membre Dernière intervention 7 juin 2010
7 juin 2010 à 14:26
Merci beaucoup pour t'as macro, et pour le temps passé à me répondre, mais j'ai finalement fais autrement:

Problème résolu en procédant par étapes:
1°)Utiliser une fonction NB.SI où on ne met rien : "" si il y a correspondance et "non" si il n'y en a pas.
2°) Dans une autre cellule, combiner une fonction SI avec une fonction RECHERCHEV pour renvoyer la cellule choisie si il n'a pas correspondance ("non").
3°)Les n° de comptes apparaissent sur les mêmes lignes, reste une simple formule de variation à poser (utilisez une fonction SI en +), et c'est fini.

Bon, c'est un peu moins carré que la macro mais c'est plus à ma portée et ça m'offre l'avantage de comprendre le fonctionnement de ma feuille, si par hazard je souhaite la modifier dans l'avenir,
Encore merci.
0
Rejoignez-nous