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 :

Insérer des indentations dans une cellule après un caractère en VBA. [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut Insérer des indentations dans une cellule après un caractère en VBA.
    Bonjour à toutes et tous;

    Je viens vers vous car je n'arrive pas à résoudre le problème suivant:

    J'ai deux colonnes A contenant un texte et B contenant un nombre d'espaces, par exemple :

    Colonne A:
    Ligne 1= ;Test
    Ligne 2= ;Test N°1
    Ligne 3= ;Test N°2

    Colonne B:
    Ligne 1= 8
    Ligne 2= 16
    Ligne 3= 32

    Mon but est de convertir le nombre d'espaces en nombre d'indentation, suivant le modèle suivant :
    8 espaces = 1 indentation
    16 espaces = 2 indentations
    32 espaces = 3indentations.

    La conversion ne me pose pas de problème, mais c'est le positionnement de ces indentations dans la cellule, ceci en VBA.

    Mon problème est de positionner ces indentations après le ; commençant chaque cellule de la colonne A mais juste avant le premier caractère de cette même cellule.

    D'avance je remercie toutes celles et ceux qui voudront bien m'aider

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Je ne saisie pas trop ce que tu veux comme résultat mais tu peux utiliser la fonction Space() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("C1").Value = Space(Range("B1").Value) & Range("A1").Value
    avec ce code, tu auras en cellule C1 comme résultat : " ;Test" (sans les guillemets) donc, 8 espaces avant le point-virgule en supposant que tu ais ;Test en A1 et 8 en, B1

  3. #3
    Membre confirmé Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut
    Bonsoir Theze;
    Merci pour ta réponse, mais en fait je voudrais convertir le nombre d'espaces en un nombre d’indentation, et avoir les indentations entre le caractère ";" et le 1er caractère de la cellule ici un "T".
    Si x représente une indentation, et 16 le nombre d'espaces donnant 2 indentations, alors je voudrais avoir le résultat suivant : ;xxTest
    Bonne soirée.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour

    Difficile de deviner avec certitude ce que tu cherches à exprimer (lire la dernière phrase de ma signature).

    Je vais personnellement me contenter de t'inviter
    - à exécuter ce petit code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ind = "        " '8 espaces pour une indentation
    nbind = 2 'ici le nombre voulu 'indentations
    texte = ";bonjour"
    MsgBox Replace(texte, ";", ";" & String(nbind, ind) & WorksheetFunction.Rept(ind, nbind))
    - voir ce qu'il fait
    - l'analyser
    - t'en inspirer

    EDIT :
    Une autre manière encore (parmi des dizaines d'autres) de se divertir (exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ind = "-" ' le caractère d'indentation choisi
    nbparind = 8 ' le nombre de caractères d'indenttion par indentation
    nbind = 3 'ici le nombre voulu d'indentations
    texte = ";bonjour"
    MsgBox Replace(texte, ";", Format(";", "@" & String(nbparind * nbind, ind)))

  5. #5
    Membre confirmé Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut
    Bonjour unparia et Merci pour ta réponse.

    Comme tu me le recommande je vais :

    - voir ce qu'il fait
    - l'analyser
    - t'en inspirer

    En espérant que cela me permette de progresser, et peut-être un jour pouvoir trouver d'autres solutions parmi les dizaines d'autres.
    Je te souhaite une bonne journée.

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    unparia

    Testes ceci peut être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("C1").Value = Left(Range("A1").Value, 1) & String(Range("B1").Value / 8, "x") & Right(Range("A1").Value, Len(Range("A1").Value) - 1)

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut
    Bonjour…

    J’en étais resté là : avec un tableau structuré nommé Tbo et, ne sachant comment l’indentation est calculée, une colonne de plus :

    dans la fenêtre des codes de l'onglet (Alt F11)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub E_Click()
      Application.ScreenUpdating = 0
      [Tbo].Item(1, 4).FormulaR1C1 = _
            "=REPLACE("";"",1,1,"";""&REPT("" "",[@espaces]))&RIGHT([@Titre],LEN([@Titre])-1)"
      [Tbo].Columns(1) = [Tbo].Columns(4).Value
      [Tbo].Columns(4).Delete
    End Sub
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [XL-2016] Insérer des donnés dans une cellule précises depuis un formulaire
    Par nico270599 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2018, 22h37
  2. Réponses: 3
    Dernier message: 24/12/2015, 12h58
  3. Réponses: 1
    Dernier message: 31/08/2011, 17h08
  4. [XL-2003] Insérer des commentaires dans une plage de cellules
    Par C Blaise dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/04/2011, 10h59

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