nombre caractères classeur excel
Tags :
Dernière réponse : dans Programmation
voilà,
dans un classeur excel, jai 3 colonne (E;F;G) qui correspond à 3 ligne adresse importer à partir fichier bloc note:
ligne 1 (E):8 boulevard des prés tralala et tralali
ligne 2 (F):batiment du chemin chapi chapo
ligne 3 G():allées des paquerettes patati et patata
ma question :
existe t il un code vba excel qui permet de limiter de nombre de caractère dans ses colonnes et qui déplace les caractères sans couper les mots en trop dans la colonnes à cotés en plus des autres caractères déjà existant .
Donc au départ colonne E; colonne F; colonne G et apres macro vba --> colonne E; colonne F avec surplus de la colonne E; et colonne G avec srplus de la colonne F .
je sais pas si je suis clair dans mon explication.
merci
dans un classeur excel, jai 3 colonne (E;F;G) qui correspond à 3 ligne adresse importer à partir fichier bloc note:
ligne 1 (E):8 boulevard des prés tralala et tralali
ligne 2 (F):batiment du chemin chapi chapo
ligne 3 G():allées des paquerettes patati et patata
ma question :
existe t il un code vba excel qui permet de limiter de nombre de caractère dans ses colonnes et qui déplace les caractères sans couper les mots en trop dans la colonnes à cotés en plus des autres caractères déjà existant .
Donc au départ colonne E; colonne F; colonne G et apres macro vba --> colonne E; colonne F avec surplus de la colonne E; et colonne G avec srplus de la colonne F .
je sais pas si je suis clair dans mon explication.
merci
Autres pages sur : nombre caracteres classeur excel
Lassé par la pub ? Créez un compte
- | Alerter
ok voici un exemple
seulement je n'arive à le faire fonctionner pour mon cas
Attribute VB_Name = "DecouperChaineSansCouperMots"
'Découper une phrase pour que les morceaux ne fassent pas
'plus de 20 caractères et qu'aucun mot ne soit coupé (la chaine est en A1)
Sub SplitTextInCell()
Dim SourceCell As Range
Dim DestCell As Range
Dim SplitArray As Variant
Dim Element As Variant
Dim Dummy As Variant
Set SourceCell = Range("A1") 'adapter
Set DestCell = Range("B1") 'adapter
SplitArray = Split(SourceCell.Value)
For Each Element In SplitArray
Dummy = Dummy & Element & Chr(32)
If Len(Dummy) > 21 Then
DestCell.Value = Trim(Left(Dummy, _
Len(Dummy) - (Len(Element) + 1)))
Set DestCell = DestCell.Offset(0, 1)
Dummy = Element & Chr(32)
End If
Next Element
DestCell.Value = Trim(Dummy)
End Sub
seulement je n'arive à le faire fonctionner pour mon cas
- | Alerter
bon en fait c est pas du tout ce que je souhaite réaliser .
pour faire plus simple, ce serait avoir un code qui lorsque je clic sur un bouton,
analyse le nombre de caractère dans les colonne E,F et G et qu un msgbox me dit "il a plus de 31 caractères dans la cellule " " "
ou alors deuxième possibilité au moment du clic sur le bouton les cellules comportant plus de 31 caractères se mettent de couleur rouge .
si quelqu un peu m aider merci d avance
pour faire plus simple, ce serait avoir un code qui lorsque je clic sur un bouton,
analyse le nombre de caractère dans les colonne E,F et G et qu un msgbox me dit "il a plus de 31 caractères dans la cellule " " "
ou alors deuxième possibilité au moment du clic sur le bouton les cellules comportant plus de 31 caractères se mettent de couleur rouge .
si quelqu un peu m aider merci d avance
- | Alerter
Contenus similaires
- Nombre de ligne bloc note - Forum
- Excel recherchev plusieurs feuilles - Forum
- Programmation en excel pdf - Forum
- Excel programmation macro - Forum
Pour parcourrir toutes les cellules d'une plage :
Pour connaître la longueur du texte d'une cellule :
Pour mettre en couleur :
Eh! si tu essayais de comprendre comment ça marche par toi-même, l'enregistreur de macro est ton ami...
Dim cell As Range
For Each cell In Range ("E1;G65535")
..
Next
Pour connaître la longueur du texte d'une cellule :
Dim cell As Range
..
Len(cell.Text)
Pour mettre en couleur :
Eh! si tu essayais de comprendre comment ça marche par toi-même, l'enregistreur de macro est ton ami... - | Alerter
merci pour ton aide ,
pour parcourir et mettre en couleur pas de problème mais la fonction
Len(cell.Text) je ne comprends pas . il me met " attendu:identificateur"
sachant que dans les cellules E2:G50 la longueur du texte change à chaque fois que j importe un fichier de valeurs séparées par des virgules Microsoft Excel.
pour parcourir et mettre en couleur pas de problème mais la fonction
Len(cell.Text) je ne comprends pas . il me met " attendu:identificateur"
sachant que dans les cellules E2:G50 la longueur du texte change à chaque fois que j importe un fichier de valeurs séparées par des virgules Microsoft Excel.
- | Alerter
cell doit être affecté à quelque chose !
Dans une boucle
For Each cell In Range("..")
c'est fait automatiquement.En dehors d'une telle boucle, tu dois l'affecter explicitement :
Dim cell As Range
Set cell = Range("A1")
MsgBox "La longueur du texte de la cellule A1 est : " & Len(cell.Text)
Set cell = Nothing
La ligne 4, c'est pour faire propre. (Mais on est en VB
)Selon le cas, tu voudras peut être écrire directement ceci :
MsgBox "La longueur du texte de la cellule A1 est : " & Len(Range("A1").Text)
- | Alerter
- | Alerter
Ben figure toi qu'il n'y a pas une fonction VB qui dit recherche et qui renvoie la liste des cellules qui comportent plus de 31 caractères. ![[:spamafote] [:spamafote]]()
C'est à toi de la créer.
Tu as tout ce qu'il te faut :
de quoi parcourir ta plage de cellules ( For Each cell ) ;
de quoi renvoyer la longueur du texte d'une cellule (Len).
![[:spamafote] [:spamafote]](http://m.bestofmedia.com/sfp/design/usr/fr/smilies/3e/46/spamafote.gif)
C'est à toi de la créer.
Tu as tout ce qu'il te faut :
- | Alerter
ok donc voilà ou j'en suis
mais cela ne tiens pas compte de ma limite à 10 caractères .
même si il y a moins de 10 caractères dans la cellule, celle-ci passe en jaune .
peut être qu'il ne comprend pas ma limite de caractère ?? je ne sais pas !!!!
Sub controle()
Dim cell As Range
Const limit As Integer = 10
For Each cell In Range("A1:C10")
If cell.Value > limit Then
MsgBox "la cellule comporte : " & Len(cell.Text) & " caractères "
cell.Interior.ColorIndex = 27
End If
Next
End Sub
mais cela ne tiens pas compte de ma limite à 10 caractères .
même si il y a moins de 10 caractères dans la cellule, celle-ci passe en jaune .
peut être qu'il ne comprend pas ma limite de caractère ?? je ne sais pas !!!!
- | Alerter
c'est bon j'ai trouvé voilà la solution
si celà peu aider quelqu'un !!!
Sub controle()
Dim cell As Range
Const limit As Integer = 10
For Each cell In Range("A1:C10" )
If len(cell) > limit Then
MsgBox "la cellule comporte : " & Len(cell.Text) & " caractères "
cell.Interior.ColorIndex = 27
End If
Next
End Sub
si celà peu aider quelqu'un !!!
- | Alerter
- | Alerter
- | Alerter
1°) Tu n'apportes rien au sujet de fred. Je te propose de créer ton propre sujet.
2°) Si tu crées ton propre sujet, évite de demander un truc tout fait. Le présent sujet est un bon exemple, le code proposé par Fred s'est vu amélioré au fur et à mesure. Mais rien ne lui a été donné tout cuit dans le bec !
3°) Mettre son adresse email en clair sur un site public est imprudent : Tu cherches à te faire spammer ?
2°) Si tu crées ton propre sujet, évite de demander un truc tout fait. Le présent sujet est un bon exemple, le code proposé par Fred s'est vu amélioré au fur et à mesure. Mais rien ne lui a été donné tout cuit dans le bec !
3°) Mettre son adresse email en clair sur un site public est imprudent : Tu cherches à te faire spammer ?
- | Alerter
Lassé par la pub ? Créez un compte
Mais tu peux l'écrire.