Microsoft 365 code vba qui renvoie la formule avec @ dedans

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
Je vous souhaite une belle journée :)

J'ai un souci de code que je ne parviens pas à résoudre,
voici mon code :
VB:
Sub Mise_à_jour()
'ATTENTION Formule : si RdV déjà   : RdV Fait Facturé

    [o2] = "=COUNTIF(R[3]C:R[9996]C,""><"")"
    [M4] = "=IF(SUM(--(ISNUMBER(SEARCH(RC[-11],Facture!R2C[-8]:R30C[-8]))))>=1,RC[-11],"""")"
  
    'ME RENVOIE EN M4 : =SI(SOMME(--(ESTNUM(CHERCHE(B4;@Facture!E$2:E$30))))>=1;B4;"")
  
    [M4].Copy
    [m5:m13].Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
  
    [J4] = "=IF(RC[3]<>"""",""RdV Fait Facturé"",""RdV Fait"")"
    [J4].Copy
    [J5:J13].Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("J4:J13").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
  
    Columns("m:q").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("A1").Select
End Sub
Le code " [M4] = "=IF(SUM(--(ISNUMBER(SEARCH(RC[-11],Facture!R2C[-8]:R30C[-8]))))>=1,RC[-11],"""")""
Me renvoie dans la cellule "M4" la formule avec @ et je ne parviens pas à m'en débarrasser.

Auriez-vous la solution ?
Je joins le fichier test et je continue à chercher.
Un grand merci à toutes et à tous,
lionel :)
 

Pièces jointes

  • recherche ds chaine.xlsm
    33.1 KB · Affichages: 8
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonsoir,

Peut-être en changeant la formule :
VB:
Sub Mise_à_jour()

    [o2] = "=COUNTIF(R[3]C:R[9996]C,""><"")"
    With Range("M4:M13")
        .FormulaR1C1 = "=IF(ISNUMBER(MATCH(""*"" &RC[-11] &""*"",Facture!R2C5:R10C5,0)),RC[-11],"""")"
        .Value = .Value
    End With
    With Range("J4:J13")
        .FormulaR1C1 = "=IF(RC[3]<>"""",""RdV Fait Facturé"",""RdV Fait"")"
        .Value = .Value
    End With

    Columns("m:q").ClearContents
    Range("A1").Select
End Sub

Equiv (MATCH ) ne renvoie pas de tableau -> pas de @.
Je pense que je ne me suis pas trompé sur l'interprétation de votre formule.
Il s'agit de trouvé la valeur de la colonne B dans les items de Factures colonne E ?

dites-moi si les résultats sont justes et l'utilité de la ligne :

Columns("m:q").ClearContents

qui efface tout !!!!

cordialement
Bonjour Hasco et merci pour le code qui fonctionne très bien :)
Pardon, je ne l'avais pas vu :rolleyes:

"dites-moi si les résultats sont justes et l'utilité de la ligne :
Columns("m:q").ClearContents
qui efface tout !!!!"

Ce code va s'insérer dans mon "usine à gaz" et les données doivent être effacées après traitement.
Merci beaucoup :)
 

soan

XLDnaute Barbatruc
Inactif
@Lionel

utilité de la ligne :
Columns("M:Q").ClearContents
qui efface tout !!!!

pas exactement ! ça efface uniquement les colonnes M à Q (en laissant intactes les autres colonnes) ; de plus, même pour les colonnes effacées, ça n'efface que le contenu (= les données), pas le format des cellules ! (ni d'autres trucs comme par exemple une MFC ou une Validation de données) ; attention : c'est Columns("M:Q").Clear qui efface vraiment tout en colonnes M à Q ! mais Excel, le PC, et l'utilisateur sont préservés. (enfin, je crois ! 🤪)

soan
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
pour ma part quand je pousse une formule dans une celulle, j'utilise le ".Formula" à la place du ".value" qui est la valeur par défaut si tu ne met rien.
Toutafé ! 👍

Par contre le soucis est tout autre : ta formule en M4 doit être validée en mode matriciel pour avoir un résultat et ensuite Tiré vers le bas.
JE ne sais pas le faire en vba
Il faut utiliser FormulaArray. ;)
 

TooFatBoy

XLDnaute Barbatruc
@Usine à gaz : tu peux essayer ça, stp et me dire quoi :

VB:
Sub Mise_à_jour()
'ATTENTION Formule : si RdV déjà   : RdV Fait Facturé

    [o2].Formula = "=COUNTIF(R[3]C:R[9996]C,""><"")"

    [M4].FormulaArray = "=IF(SUM(--(ISNUMBER(SEARCH(RC[-11],Facture!R2C[-8]:R30C[-8]))))>=1,RC[-11],""-"")"
    'ME RENVOIES EN M4 : =SI(SOMME(--(ESTNUM(CHERCHE(B4;@Facture!E$2:E$30))))>=1;B4;"")
    [M4].Copy
    [m5:m13].PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

    [J4].Formula = "=IF(RC[3]<>""-"",""RdV Fait Facturé"",""RdV Fait"")"
    [J4].Copy
    [J5:J13].PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False

    With Range("J4:J13")
        .Value = .Value
    End With

    Columns("m:q").ClearContents

    Range("A1").Select

End Sub
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
@Usine à gaz : tu peux essayer ça, stp et me dire quoi :

VB:
Sub Mise_à_jour()
'ATTENTION Formule : si RdV déjà   : RdV Fait Facturé

    [o2].Formula = "=COUNTIF(R[3]C:R[9996]C,""><"")"

    [M4].FormulaArray = "=IF(SUM(--(ISNUMBER(SEARCH(RC[-11],Facture!R2C[-8]:R30C[-8]))))>=1,RC[-11],""-"")"
    'ME RENVOIES EN M4 : =SI(SOMME(--(ESTNUM(CHERCHE(B4;@Facture!E$2:E$30))))>=1;B4;"")
    [M4].Copy
    [m5:m13].PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

    [J4].Formula = "=IF(RC[3]<>""-"",""RdV Fait Facturé"",""RdV Fait"")"
    [J4].Copy
    [J5:J13].PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False

    With Range("J4:J13")
        .Value = .Value
    End With

    Columns("m:q").ClearContents

    Range("A1").Select

End Sub
Re-Marcel : Test fait et c'est tout bon et le code est court ... super :
Merci à toi,
lionel :)
 

TooFatBoy

XLDnaute Barbatruc
Merci à toi d'avoir testé. 🤩👍

Re-Marcel : Test fait et c'est tout bon et le code est court ... super
C'est ton code de #1, dans lequel j'ai enlevé les Select car, comme tu le sais, les Select sont à proscrire tant que faire se peut. ;)

Ton problème initial venait donc uniquement du fait que la formule qui n'était pas validée sous forme matricielle. ;)
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
550