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
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) =...
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
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
Non pas vraiment. desolé
Doit on supprimer les espaces dans la distribution ? ha oui , ca serait peut etre une astuce a laquelle je n'ai pas pensé
Quels sont les autres traitement effectués qui posent problème ? trop long a expliquer et a montrer
Si le but est de distribuer les lettres sans les espaces, essayez :
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
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.
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.
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.