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

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 !

Usine à gaz

XLDnaute Barbatruc
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

Dernière édition:
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 🙂
 
@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:
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. 😉
 
@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 🙂
 
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:
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 🙂
 
- 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

Discussions similaires

Réponses
10
Affichages
455
Réponses
2
Affichages
214
Réponses
11
Affichages
510
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…