Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

macro affectation d'une valeur en fonction d'une valeur d'une autre feuille

  • Initiateur de la discussion Initiateur de la discussion drivalin
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

drivalin

Guest
bonjour,
je cherche en vain dans les macros dispo, une petite macro qui ferait la rechercher suivante en VBA :
tableau de x données, le x est la dernière ligne de la liste
feuille dénommée "Q"
pour la plage des cellules de A1 à Ax, chercher si chacune existe quelque part dans la feuille "P" colonne A et si oui, récupérer la valeur de la colonne B en regard, la copier et la coller dans la colonne B de la feuille "Q" en regard de la cellule A qu'on était en train de vérifier.

et la boucle continue ainsi jusqu'à la valeur Ax.

j'ai démarré une petite macro, mais j'avoue que je galère...😕

d'avance merci - Daniel
 
Re : macro affectation d'une valeur en fonction d'une valeur d'une autre feuille

Bonjour drivalin,

Un exemple de macro avec tes critères :

Code:
Sub Recherche()
For Each cel In Sheets("Q").Range("A1:A" & x)
  With Sheets("P").Range("A:A")
    Set trouve = .Find(cel.Value, LookIn:=xlValues, lookat:=xlWhole)
    If Not trouve Is Nothing Then
      .Cells(cel.Row, 2) = Sheets("P").Cells(trouve.Row, 2)
    End If
Next
End Sub

Je n'ai pas testé, mais je pense que ça doit fonctionner.

Cordialement.
 
Re : macro affectation d'une valeur en fonction d'une valeur d'une autre feuille

merci beaucoup,

j'ai une erreur sur le "next"
je cherche
j'ai essayé avec "next cel", pas mieux....

any idea ?

Daniel
 
Re : macro affectation d'une valeur en fonction d'une valeur d'une autre feuille

mon logiciel ne supportant pas apparemment la version For Each Next
quelle autre fonction pourrait la remplacer "facilement"


d'avance merci

Daniel
 
Re : macro affectation d'une valeur en fonction d'une valeur d'une autre feuille

merci beaucoup,

j'ai une erreur sur le "next"
je cherche
j'ai essayé avec "next cel", pas mieux....

any idea ?

Daniel

Bonsoir Daniel,

Comme je te l'ai dit, j'ai écrit le code sans le vérifier, et j'ai oublié une ligne.

Voici donc la correction :

Code:
Sub Recherche()
For Each cel In Sheets("Q").Range("A1:A" & x)
  With Sheets("P").Range("A:A")
    Set trouve = .Find(cel.Value, LookIn:=xlValues, lookat:=xlWhole)
    If Not trouve Is Nothing Then
      .Cells(cel.Row, 2) = Sheets("P").Cells(trouve.Row, 2)
    End If
  [COLOR="Red"]End With[/COLOR]
Next
End Sub

Avec mes excuses les plus plates.

Cordialement.
 
Re : macro affectation d'une valeur en fonction d'une valeur d'une autre feuille


Ne t'excuses pas, j'aurai pu le voir aussi.😉

Merci -🙂 ça marche bien mieux ainsi en effet. enfin... en remplaçant la fonction ".find" par un Msgbox pour vérifier du fonctionnement de la boucle.

En fait, j'utilise cette fonction VBA sur une zohosheet (tableur zoho en ligne, qui supporte la majorité des fonctions VBA au contraire de Google spreadsheet), et maintenant c'est la fonction ".Find" qui me renvoie une erreur "unknown function"😕
J'ai posté un msg sur le forum zoho pour en savoir plus..

merci - Daniel
 
Re : macro affectation d'une valeur en fonction d'une valeur d'une autre feuille

En remplaçant cel.value par Cell.value, je n'ai plus l'erreur sur le find, mais le msg suivant : Invalid class for field get

Qui sous entendrait qu'il reconnait la fonction .Find
Est-ce que l'erreur pourrait venir du texte après .Find ?

Merci pour vos avis

Daniel
 
Re : macro affectation d'une valeur en fonction d'une valeur d'une autre feuille


Bonjour Daniel,

Je ne connais pas zoho, mais je peux te proposer d'essayer comme suit :

Code:
Set trouve = .Find(cel.Value, LookIn:=xlValues)

Ou bien :

Code:
Set trouve = .Find(What:=cel.Value, LookIn:=xlValues)

Espérant avoir aidé.

Cordialement.
 
Re : macro affectation d'une valeur en fonction d'une valeur d'une autre feuille


Merci pour ta réponse ! un samedi qui plus est !😉

malheureusement, il ne reconnait toujours pas la fonction "Find" avec l'une ou l'autre de ces syntaxes, c'est pas cool de sa part.😡

voici mon code actuel :
Sub test()

For Each cel In Sheets("Feuille1").Range("A2:A100")
With Sheets("Feuille2").Range("A:A")
Set trouve = .Find(What:=cel.Value, LookIn:=xlValues)
If Not trouve Is Nothing Then
.Cells(cel.Row, 2) = Sheets("Feuille2").Cells(trouve.Row, 2)
End If

End with
Next

End Sub

pour ma gouverne, mes connaissances en VBA datant d'il y a plus de 15 ans, "set trouve" définit "trouve" pour l'action de chercher (Find)
il n'y a pas besoin sur VBA de définir "trouve" avant le "set" ?

Daniel
 
Dernière modification par un modérateur:
Re : macro affectation d'une valeur en fonction d'une valeur d'une autre feuille


Re :

Effectivement, Le fait d'écrire Set suffit à déclarer une variable pour la recherche.

Par ailleurs, j'ai donc fini par tester mon code, et j'ai détecté une erreur mais sans provoquer de plantage : il n'y avait aucune action visible suite à une erreur de référence de feuille.

Je t'envoie donc la correction, bien que je pense que celà ne résoudra pas ton problème :

Code:
Private Sub CommandButton1_Click()
x = Sheets("Q").Range("A65536").End(xlUp).Row
For Each cel In Sheets("Q").Range("A1:A" & x)
  With Sheets("P").Range("A:A")
    Set trouve = .Find(cel.Value, LookIn:=xlValues, lookat:=xlWhole)
    If Not trouve Is Nothing Then
      .Cells(cel.Row, 2) = Sheets("[COLOR="Red"]Q[/COLOR]").Cells(trouve.Row, 2)
    End If
  End With
Next
End Sub

Après correction, ça fonctionne pardaitement.

Je pense donc que le problème vient effectivement de ton utilisation avec zoho, et là je, ne sais plus comment t'aider. Peut-être pourrais-tu chercher sur le Web s'il existe des forums traitant de zoho ?

En te souhaitant pleine réussite dans tes recherches.

Cordialement.
 
Re : macro affectation d'une valeur en fonction d'une valeur d'une autre feuille

merci pour la précision dans le code.

après mise à jour, en effet le vba du tableur en ligne zoho plante encore sur "find" qu'il dit ne pas reconnaitre.

J'ai posté sur le forum très actif de zoho,
VBA zoho sheet ".Find" and "for each next" - Zoho Forums

mais moins actif que sur excel-downloads puisque tu m'as déjà répondu plusieurs fois ce jour ;-)

encore merci et bonnes fêtes de Pâques !

Daniel
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…