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

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:

ChTi160

XLDnaute Barbatruc
Bonsoir
n'y connaissant rien où presque aux formules Lol
j'ai fait une petite procédure vba à Voir !
Bonne fin de Soirée
Jean marie
 

Pièces jointes

  • recherche ds chaine (Chti160).xlsm
    39.2 KB · Affichages: 4

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Hasco et merci pour le code qui fonctionne très bien
Pardon, je ne l'avais pas vu

"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
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:

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour

Pourquoi faire simple quand on peut faire compliqué ? Mettre du matriciel là où il n'y en a pas besoin, faire des copies là où il n'y en a pas besoin ? Oui, ça fait certainement plus pro ?

Allez, bonne trituration méningiale
 

Discussions similaires

Réponses
3
Affichages
588
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…