VBA Syntaxe formule

Bonsoir à tous,

Je cherche à écrire ce code

Range("s1") = "=MATCH(t1,Feuil2!a1:a500,0)"

mais à la place de la formule, je voudrais la valeur, j'essaye ceci :

Range("s1") = WorksheetFunction.Match(Range("t1"), Range("Feuil2!a1:a500", 0))

ce qui me donne Erreur 1004

où se trouve l'erreur et quel serait le bon code ?

merci du coup de pouce

Amicalement

Claude.

Bonsoir Claude

Peux-tu essayer :

Dim Plage as Range

With Sheets ("Feuil2")

Set Plage = .Range("A1:A500")

Range("S1").Value = WorksheetFunction.Match(Range("T1"), Plage, 0))

End With

Amicalement

Nad

Bonsoir Claude,

Petite erreur dans ta formule il me semble. La parenthèse est mal placée. Correction ci-après :

Range("s1") = WorksheetFunction.Match(Range("t1"), Range("Feuil2!a1:a500"), 0)

A te relire

Dan

Merci Nad & Dan,

Dan, là ta syntaxe est bonne, ok,

Seulement si la fonction Match ne trouve pas d'équivalence elle provoque un bug. et

même avec un résume Next devant.

A moins que vous voyez une autre solution, je vais conserver ma macro (que j'utilise

fréquemment) et que voici :

Sub MiseAjour()
Dim Lg As Long, Lg2 As Long, Cel
        Sheets("Feuil1").Select
        Application.ScreenUpdating = False
    For Each Cel In Range([b1], [b65536].End(xlUp))
                    Lg = Cel.Row
                Range("t1") = Cel
                Range("s1") = "=MATCH(t1,Feuil2!a1:a500,0)"
            If IsError(Range("s1")) = False Then
                    Lg2 = Range("s1")
                Range("Feuil2!a" & Lg2 & ":L" & Lg2).Copy Destination:=Range("b" & Lg)
            End If
        Application.CutCopyMode = False
    Next Cel
        Range("s1:t1").ClearContents
End Sub

C'était surtout pour voir les possibilités

encore merci à vous deux

Claude.

PS: je ne vois plus à l'écriture des messages le correcteur d'ortographe !

11

Re,

Il te faut mettre juste avant ceci

On Error GoTo Errormsg

...instruction match

A la fin de ta macro

exit sub

Errormsg:

Msgbox "cette ref n'existe pas"

end sub

Amicalement

Dan

Bonsoir, Claude

je pense, qu'un petit fichier joint pourrait sûrement mieux t'aider.....

avec les tenants et aboutissants...

Bonne soirée

Salut le forum

Félix, c'est pour cette ficelle

https://forum.excel-pratique.com/viewtopic.php?t=10574

Mytå

Bonjour à tous,

merci Dan,

Felix,

Voici le fichier :

https://www.excel-pratique.com/~files/doc/miseAjour_2feuilles.xls

C'est pour répondre à une question récurrente sur le forum.

-récupérer des données d'une feuille à une autre.

Je souhaitais améliorer ma syntaxe !

Bonne journée

Claude.

Re,

J'ai supposé qu'il faut trouver les données de la colonne B dans la feuille 1 et les mettre dans la feuille Origine en colonne B par rapport à la numérotation de la colonne A.

Essaye ceci :

Sub test()
'Macro Dan pour Dubois le 01/04/09 - XL pratique
Dim cel As Range
Dim num As Integer
For Each cel In Range("A1:A51")
On Error Resume Next
num = Application.WorksheetFunction.Match(cel, Sheets("Feuil1").Range("A1:A500"), 0)
Range("B" & cel.Row) = Sheets("Feuil1").Range("B" & num)
Next
End Sub

Amicalement

Dan

Bonjour à tous,

Dan,

Ce n'est pas ce qui est demandé, j'ai sans doute mal expliqué !

  • récupérer les données (colonnes A à L) de la feuil2 dans la feuil1 (le tri est différent)
  • ignorer la colonne de chiffres A
  • La feuille "origine" ne sert à rien
merci d'avoir regarder

Claude.

Bonjour, Claude

essaie avec ce code :

Sub MiseAjour()
Dim Lig As Long, Cel As Range
With Sheets("Feuil1")
    For Each Cel In .Range("B1:B" & .[B65000].End(xlUp).Row)
        On Error Resume Next
        Lig = Application.Match(Cel, Sheets("Feuil2").Columns(1), 0)
        On Error GoTo 0
        If Lig > 0 Then
            Sheets("Feuil2").Cells(Lig, 1).Resize(1, 12).Copy .Cells(Cel.Row, 2)
            Lig = 0
        End If
    Next Cel
End With
End Sub

Bonjour felix,

entre temps, j'ai supprimer la colonne A (chiffres) et ta macro plante au Match

nouveau fichier :

https://www.excel-pratique.com/~files/doc/miseAjour_feuilles_3.xls

merci et bonne journée

Claude.

re,

Désolé Claude mais j'ai essayé de deviner ce que tu voulais faire dans ton premier fichier.

Pour ce qui est du code de Felix, je n'ai aucun plantage, cela fonctionne très bien.

Amicalement

Dan

re,

Alors là, j'y comprends plus rien !

on parle bien du fichier de mon dernier message ?

https://www.excel-pratique.com/~files/doc/miseAjour_feuilles_3.xls

Claude.

re,

Oui claude.

Amicalement

Dan

re,

erreur 13 , inompatibilité de type,

J'ai l'impression que le On Error Resume Next n'a pas d'effet .

n'y aurait-il pas une option a cocher quelque part ?

Claude.

édit: j'ai coché dans options : arrêt sur les erreurs non gérées, et là çà marche. (au lieu de arrêt sur toutes les erreurs)

re,

puis-je laisser l'option comme çà, pour mes autres fichiers ?

- j'ai coché dans options : arrêt sur les erreurs non gérées, et là çà marche. (au lieu de arrêt sur toutes les erreurs)

merci à tous,

Claude.

7testv4.xlsm (116.11 Ko)
Rechercher des sujets similaires à "vba syntaxe formule"