IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

vba écriture d'un formule IF dans une cellule avec test <>"" [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    technicien qualité
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : technicien qualité

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Points : 6
    Points
    6
    Par défaut vba écriture d'un formule IF dans une cellule avec test <>""
    Bonjour à tous,

    je viens vers vous car je bloque sur l'écriture d'une formule dans une cellule par vba:

    je cherche a ce que la macro écrive la formule suivante dans une cellule =si(D5<>"";C5/D5*100;"")

    j'arrive a faire le test sur une cellule différente de 10
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cells(i, 5).Formula = "=IF(" & Cells(i, 4).Address & " <> " & "10" & "," & Cells(i, 3).Address & "/" & Cells(i, 4).Address & "*100" & ",10)"
    mais lorsque je cherche a faire le test sur cellule <>""

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cells(i, 5).Formula = "=IF(" & Cells(i, 4).Address & " <> " & """" & "," & Cells(i, 3).Address & "/" & Cells(i, 4).Address & "*100" & "," & """" & ")"
    ca plante avec une erreur d'exécution '1004' sur cette ligne, comment je peux écrire cellule vide sans écrire "" ?
    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Points : 412
    Points
    412
    Par défaut Ceci devrait aller
    Bonjour,

    Vous pouvez inclure directement les virgules et les "" dans le code sans passer par des &

    Par exemple & "<>" & """"" & "," & devient simplement & "<>""""," &. De plus """" signifie : simplement un seul " entre guillemets pour lui. donc """" -> " dans Excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, 5).Formula = "=IF(" & Cells(i, 4).Address & "<>""""," & Cells(i, 3).Address & "/" & Cells(i, 4).Address & "*100,"""")"
    Je ne sais pas si j'ai été clair

    Cordialement,

    Quentin

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 960
    Points : 28 970
    Points
    28 970
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une autre solution pour éviter ces suites de guillemets indigestes, c'est le test sur la longueur des caractères.
    A la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI($D$2)<>"";$C$2/$D$2*100;10)
    la formule suivante donne le même résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(NBCAR($D$2)<>0;$C$2/$D$2*100;10)
    soit en VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, 5).Formula = "=IF(LEN($D$2)<>0,$C$2/$D$2*100,10)"
    et encore plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, 6).Formula = "=IF(LEN($D$2),$C$2/$D$2*100,10)"

  4. #4
    Futur Membre du Club
    Homme Profil pro
    technicien qualité
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : technicien qualité

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Points : 6
    Points
    6
    Par défaut ça marche
    Bonjour,

    ca marche impeccable, et en plus j ai appris quelque chose.

    Merci beaucoup
    Nicolas

  5. #5
    Membre actif
    Homme Profil pro
    Enthousiaste Excel
    Inscrit en
    Avril 2015
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enthousiaste Excel

    Informations forums :
    Inscription : Avril 2015
    Messages : 155
    Points : 242
    Points
    242
    Par défaut
    Pour revenir sur ta formule originale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=IF(" & Cells(i, 4).Address & " <> " & """""" & "," & Cells(i, 3).Address & "/" & Cells(i, 4).Address & "*100" & "," & """""" & ")"
    Tu as oublié que

    "" Donne "

    mais que "" est du texte, le texte s'ouvre avec "

    Donc pour écrire
    <>""
    Il faut faire
    "<>"""""
    "<>"" "" "
    ouverture ; Premier "; second " ; fermeture

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 960
    Points : 28 970
    Points
    28 970
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'avais oublié que c'était inclus dans une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, 5).Formula = "=IF(LEN(" & Cells(i, 4).Address & ")<>0," & Cells(i, 3).Address & "/" & Cells(i, 4).Address & "*100,10)"
    Ceci dit, il est préférable et plus rapide d'inclure la formule directement dans la plage complète
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("E2:E100").Formula = "=IF(LEN($D$2),$C$2/$D$2*100,10)"
    A lire ces billets : Ecrire une formule dans Excel à l'aide d'une procédure VBA et la suite Ecrire une formule dans Excel à l'aide d'une procédure VBA (Part 2)

  7. #7
    Futur Membre du Club
    Homme Profil pro
    technicien qualité
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : technicien qualité

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Points : 6
    Points
    6
    Par défaut yes
    merci a tous,

    en reprenant le test de longueur et les doubles guillemets j arrive a ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cells(i, 5).Formula = "=IF(LEN(" & Cells(i, 4).Address & ")," & Cells(i, 3).Address & "/" & Cells(i, 4).Address & "*100,"""")"
    et ca marche

    @Philippe : effectivement c est inclu dans une boucle, je viens écrire dans un tableau avec nombre de ligne variable, et pour chaque ligne en fonction du nom inscrit dans la colonne B j inscrit la quantité associée dans la colonne F et ecrit des formules dans d'autre colonnes. je vais conserver ma variable i qui me déplace de ligne en ligne même si c est moins rapide c'est plus lisible pour moi.

    merci
    Nicolas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Variable = formule contenu dans une cellule
    Par Pa2pseudo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/05/2009, 21h29
  2. Inserer une formule (Longue) dans une cellule via VBA
    Par alex830001 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/01/2009, 12h28
  3. [VBA Excel] Récuperation de l'erreur dans une cellule lors de sa lecture
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/03/2008, 19h58
  4. [VBA-E] Séparer Nom Prénom placés dans une cellule unique
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/04/2007, 20h23
  5. [VBA-E] Comment écrire à la suite dans une cellule ?
    Par bogosse dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/07/2006, 13h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo