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

Microsoft 365 lettre suivante

Jamba31

XLDnaute Nouveau
Bonjour et merci d'avance
tout d'abord , je ne suis pas un grand spécialiste, et je me débrouille tout juste en faisant de enregistrements de macro sur des feuilles de calculs simples , et en enchainant des suite logiques de fonction et de petites macro , j'arrive a peu près a mes désirs
mais là , toutes mes petites astuces habituelles ne fonctionnent pas te j ai besoin de votre aide

sur une feuille de calcul , j'ai une macro qui "m éclate" un texte d'une seule cellule en mettant sur chaque caractère dans des cellules les unes a la suite des autres sur une ligne ; ca ca marche .
sur cette feuille , j ai besoin de recopier un a un chaque caractère dans la première cellule de la série , je fait ca avec un simple copier/collage spécial valeur . la valeur de cette cellule est ensuite reprise dans un autre cellule avec un simple = , puis d'autres fonction et calculs traitent cette cellule dans d'autres feuilles du classeur
mon problème est que quand le caractère copié est un espace , bien une espace frappé avec la touche espace hein , pas un blanc " " ; ces fameuses autres fonctions et calculs sont bloqués.
j ai donc besoin d'un petit code qui fait recommencer le copier / collage spécial valeur si le caractère copié a été un espace
sur la feuille en exemple , l éclatement du texte de la cellule A4 se fait sur la ligne 3 en b3 , c3 , d3.....
le copié / collage spécial reprendrais donc la ligne de c3 à da3 , pour le coller spécial valeur en b3 . la cellule qui reprend la valeur de b3 est b1 (qui elle même est reprise ailleurs pour la suite de mon classeur )
voila , je pense avoir expliqué assez clairement ce que je souhaite pourque vous puissiez m aider

merci de vos réponses
 

Pièces jointes

  • Aide XlDownload 01.xlsx
    17.4 KB · Affichages: 3
Solution

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Jamba,
bien une espace frappé avec la touche espace hein , pas un blanc " "
Un espace dans une phrase se traduit par un blanc.
Quelle différence faites vous entre un espace et un blanc ?
je pense avoir expliqué assez clairement ce que je souhaite
Non pas vraiment.
Doit on supprimer les espaces dans la distribution ?
Quels sont les autres traitement effectués qui posent problème ?

Si le but est de distribuer les lettres sans les espaces, essayez :
VB:
Private Sub CommandButton1_Click()
    Dim Chaine$, C%, i%
    [B3:ZZ3].ClearContents
    Chaine = [A4]
    C = 2
    For i = 1 To Len(Chaine)
        If Mid(Chaine, i, 1) <> " " Then
            Cells(3, C) = Mid(Chaine, i, 1)
            C = C + 1
        End If
    Next i
End Sub
 

Pièces jointes

  • Aide XlDownload 01.xlsm
    21.8 KB · Affichages: 1

Jamba31

XLDnaute Nouveau
Bonjour Jamba,

Un espace dans une phrase se traduit par un blanc.
Quelle différence faites vous entre un espace et un blanc ?
alors moi visuellement , aucune différence , par contre Excel fait un différence
l espace est un caractère dont l Unicode est 32 , si vous faite supprimer dans une cellule ou vous avez tapé un espace , l unicode ne peut s'afficher ,Excel donne Valeur!... la cellule est vide , aucune différence visuellement avec une cellule contenant un espace

je vais essayer ca ...merci
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
... évidemment un espace et une cellule vide sont deux choses différentes puisqu'un espace est un caractère de code 32. Une cellule vide est ... rien. pour XL ce n'est pas la même chose.
Une autre façon de faire pour supprimer les espaces mais aussi d'autres caractères qui pourraient "perturber" vos macros comme : ' , ; . : / ! ....
VB:
Private Sub CommandButton1_Click()
    ' On ne retient que les caractères présens dans ChaineRef.
    Dim Chaine$, ChaineRef$, C%, i%
    [B3:ZZ3].ClearContents
    ChaineRef = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789éèàçù$£µ&@ïôâêœ"
    Chaine = [A4]
    C = 2
    For i = 1 To Len(Chaine)
        If InStr(1, ChaineRef, Mid(Chaine, i, 1)) > 0 Then
            Cells(3, C) = Mid(Chaine, i, 1)
            C = C + 1
        End If
    Next i
End Sub
Ainsi dans "s'échappe" l'apostrophe est ignoré. Dans la 1ere macro il serait conservé.

Ceci étant dit, il doit être possible dans vos macros de faire cette différence facilement.
 

Pièces jointes

  • Aide XlDownload 01 V2.xlsm
    22.9 KB · Affichages: 1

Jamba31

XLDnaute Nouveau
merci beaucoup , cette macro convient tres bien a ce que je voulais faire
mieux vaut un qui sait que moi qui cherche

encore merci
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
La mise en vert d'un post est pour aider le futur lecteur et le diriger vers la solution car il n'a qu'à cliquer ici pour y aller :

Donc la solution ne peut pas être votre réponse.
Le mieux est soit de ne rien mettre, soit mettre la solution retenue, le post #2 ou #4. ce sera plus compréhensible.
 

Discussions similaires

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