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: Etirer une formule via VBA [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 16
    Par défaut VBA: Etirer une formule via VBA
    Bonjour a tous,

    Je rencontre le probleme suivant: je dois envoyer des tableurs via des chats, et si je ne rajoute pas des espaces apres les cellules de la colonne A qui ont un nombre de caracteres inférieur a 13, (dans le chat) toutes les colonnes se décalent, et il faut ensuite les remettre en ordre (chronophage, pénible, repetitive).

    En résumé, je cherche a avoir la formule suivante (=IF(LEN(Zw)<13;Zw & " ";Zw) dans les cellules de la colonne A, w étant la ligne mentionner.

    Ca fait approximativement ce code, mais je ne sais pas comment faire varier le w dans la formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        For w = 2 To 250
                Cells(w, 1).Value= "IF(LEN(Zw)<13;Zw & "       ";Zw)
        Next w
    Je ne sais pas si je suis clair, n'hésitez pas a me poser des questions.

    Merci d'avance

  2. #2
    Membre averti Avatar de ylemasson
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 52
    Par défaut
    Bonjour

    En fait vous mélangez les valeurs et les formules dans votre code.

    Voici ci qui devrait convenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        For w = 2 To 250
                Cells(w, 1).value= iif(len( Cells(w, 1).value)<13, Cells(w, 1).value & "       "; Cells(w, 1).value)
        Next w

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Premièrement, pour mettre une formule dans une cellule, on n'utilise pas Value mais Formula (ça parait assez logique).

    La formule transmise à Formula est une simple chaine de caractère et doit donc être construite comme telle.

    Mais ton principe de base ne fonctionne pas : on ne peut pas mettre dans une cellule une formule faisant référence à la valeur qu'elle contient elle-même.

    Le bon code serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        For w = 2 To 250
                If Len(Cells(w, 1).Value) < 13 Then Cells(w, 1).Value = Cells(w, 1).Value + Space(13 -Len(Cells(w, 1).Value))
        Next w
    Mais il est possible qu'il y ait une solution plus simple que de passer par Space.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Mais il est possible qu'il y ait une solution plus simple que de passer par Space.
    J'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        For w = 2 To 250
                Format(Cells(w, 1).Value) = Format(Cells(w, 1).Value), "!@@@@@@@@@@@@@")
        Next w

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 16
    Par défaut
    Merci a tous,

    J'ai finalement utilisé la version de Menhir, mais celle incluant Space, puisqu'elle me permet de touit moduler selon mon besoin.

    Merci a vous deux pour cette aide tres précieuse! Je place avec plaisir cette discussion en Résolue

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 24/05/2017, 08h30
  2. [XL-2010] Insérer une formule via VBA
    Par pitchito dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 12/08/2016, 12h47
  3. [XL-2013] Insérer/Créer une formule en vba dans une cellule
    Par Shiyatsu dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/10/2015, 13h46
  4. introduire formule dans une cellule via VBA
    Par lilly91 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/02/2010, 16h16
  5. 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

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