Flux rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[VBA] Traitement d'une chaine de caractère

georgette, le jeudi 19 janvier 2006 à 15:41:11
Bonjour tout le monde !

Voilà, j'ai une chaine de caractère (dans une variable) comprenant le nom et le prénom exemple : "HUS Anne" et je voudrais faire un code qui, par magie la transforme en "HUS A."

J'ai pensé à la fonction Split, mais je suis vraiment pas sur, et ne sais comment l'utiliser dans ce genre de situation.

Une personne de bonne famille verait-elle comment je pourrais faire ?

Un grand merci d'avance !
Répondre à georgette  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Armojax, le jeudi 19 janvier 2006 à 17:19:25
Bonjour georgette,

Tu peux essayer ça :
Function TRANSFO(Chaine)
  Dim I As Integer
  I = 1
  Do While UCase(Left(Chaine, I)) = Left(Chaine, I)
    I = I + 1
  Loop
  TRANSFO = Left(Chaine, I - 1) & "."
End Function
Répondre à Armojax

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Georgette, le jeudi 19 janvier 2006 à 19:30:37
Wouaouuu merci pour le code, c'est super sympa !! Je le testerai demain au taf'. Un grand merci de nouveau !
Répondre à Georgette

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Georgette, le jeudi 19 janvier 2006 à 19:56:21
Et oui, c'est encore moi... par curiosité j'ai finalement testé chez moi, et apparement il me manque une librairie car quand j'éxécute il me dit "projet ou bibliothèque introuvable" et me surligne LEFT.

Par hasard, sais tu qu'elle bibliothèque il me faut ?
Répondre à Georgette

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Armojax, le jeudi 19 janvier 2006 à 20:03:55
Re,

Tu vas dans VBA, et dans la barre de menu, tout en haut, tu fais : Outils/Références... Coche, si ce n'est déjà fait, les librairies suivantes :
- Visual Basic For Applications
- Microsoft Excel 10.0 Object Library
- OLE Automation
- Microsoft Office 10.0 Object Library

Tu devrais avoir tout ce qu'il te faut pour les besoins courants...
Répondre à Armojax

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Georgette, le jeudi 19 janvier 2006 à 21:14:47
Alors là c'est incompréhensible, la condition de sortie n'est pas valide. En effet mon programme plante à cause d'un dépassement de capacité de la variable 'i' (il arrive à 32700), pourtant ton code me semble cohérent...

Dim Chaine As String
Dim rr As String


Chaine = "MARTIN Bob"


  Dim I As Integer
  I = 1
  Do While UCase(Left(Chaine, I)) = Left(Chaine, I)
   I = I + 1
  Loop
  rr = Left(Chaine, I - 1) & "."

MsgBox (rr)


Franchement je vois pas d'ou ça peut venir.

Bon sinon, il me manquait en effet la librairie Excel, donc merci beaucoup de l'info !!
Répondre à Georgette

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Armojax, le jeudi 19 janvier 2006 à 21:45:03
Eh bien ton code fonctionne très bien chez moi...
Alors ?

Pour utiliser ma fonction, si "MARTIN Bob" se trouve dans la cellule A1, il faut écrire :
=TRANSFO(A1)
... mais je suppose que c'est ce que tu fais.

Vois pas pourquoi ça marche pas chez toi.
Répondre à Armojax

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Georgette, le jeudi 19 janvier 2006 à 22:09:46
En faite moi je testais ta fonction sous Access, dans un formulaire.

J'ai testé sous Excel, j'ai donc inséré ta fonction dans Visual Basic Editor et mis =TRANSFO(A1) dans une cellule mais ça me retourne #NOM? Je dois pas savoir utiliser cette chose là...
Répondre à Georgette

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Kobaya, le vendredi 20 janvier 2006 à 22:43:33
salut Georgette,

As-tu déclaré ta fonction en Public dans un module, afin qu'elle soit accessible depuis une feuille ?
A+,
Kobaya.
Répondre à Kobaya

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Georgette, le samedi 21 janvier 2006 à 21:43:27
Salut Kobaya !

Oui, dans excel j'ai tapé dans (feuil1) de Visual Basic Editor le code qui suit :

Public Function TRANSFO(Chaine)
  Dim I As Integer
  I = 1
  Do While UCase(Left(Chaine, I)) = Left(Chaine, I)
    I = I + 1
  Loop
  TRANSFO = Left(Chaine, I - 1) & "."
End Function


Mais lorsque je teste ma fonction j'ai '#NOM?' dans la cellule ou j'appelle la fonction

C'est bizare kan meme
Répondre à Georgette

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lami20j, le samedi 21 janvier 2006 à 22:03:44
Salut,

ce n'est pas dans le feuil1 de VBE que tu dois écrire ta fonction.

Il faut créer un module (voir menu Insertion/Module ou clic droit-Insertion-Module) et dans le module insère la fonction.

lami20j

P.S. kobaya a demandé : As-tu déclaré ta fonction en Public dans un module,...?
Répondre à lami20j

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Georgette, le samedi 21 janvier 2006 à 22:44:31
Salut Lami20j !

En faite je crois qu'il y a un petit quiproquo, je parle d'Excel, car sous Acces la fonction ne marche pas (la condition d'arret de la boucle ne fonctionne pas) .

Donc, je ne vois pas sous Excel le menu Insertion/module. J'ai donc rentré la fonction dans le VBE, car apparement il n'y a pas de module sous Excel (du moins pas dans ma version) et j'ai ce fichue #NOMS? qui apparait....
Répondre à Georgette

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lami20j, le samedi 21 janvier 2006 à 22:55:34
Re,

Tu ouvre l'editeur Visual Basic (je parle d'Excel). Donc depuis un classeur Excel voir menu Outils/Macro/Visual Basic Editor.

Une fois le VBE ouvert tu verras dans l'Explorateur des projets le répertoire Microsoft Excel Objects VBAProject(Classeur1) avec ses Feuilles.

Tu fait un clic droit et dans le menu contextuel tu verras Insertion/Module ou menu Insertion/Module (je parle de menu du VBE pas d'Excel)

Tu clic sur Module et tu verras que un répertoire Modules et crée et maintenant contient un module (Module 1)

Ecrit la fonction dans ce module et testes ta fonction.

Quelques images http://www.excel-vba-francais.com/vba-excel-fonctionalites-e­diteur.htm
Répondre à lami20j

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Georgette, le samedi 21 janvier 2006 à 22:59:04
re !

Nickel Chrome, ça marche !! Par contre c'est bizare ke la condition d'arret de marche pas sous Access...

Merci beaucoup en tout cas ! Et bonne fin de soirée !
Répondre à Georgette

14


  • 2
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
lami20j, le samedi 21 janvier 2006 à 23:19:15
Re,

si tes chaines que tu veux modifier ont le format NOM Prenom et tu veux obtenir NOM P. voilà une autre fonction sans utiliser une boucle
Function transfo2(chaine)
Dim pos As Integer, stemp As String

    pos = InStr(chaine, " ")
    stemp = Mid(chaine, pos + 1, 1)
    stemp = Left(chaine, pos - 1) & " " & stemp & "."
    transfo2 = stemp
    
End Function
Répondre à lami20j

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Georgette, le samedi 21 janvier 2006 à 23:31:04
Formidable ! Ta fonction marche nickel ! Un grand merci, c'est super sympa !!
Répondre à Georgette
[C] concaténer chaine caractère avec double (Résolu)Bonjour, voila j'ai besoin de gérer un filtre qui ne comprend que des chaines de caractère et mon parametre qui vari est un nombre de type doube pour resoudre mon probleme il faut don que je concatene une chaine caractère constante avec ma... www.commentcamarche.net/forum/affich-6375401-c-concatener-chaine-caractere-avec-double
Diviser chaine caractere excel (Résolu)Bonjour, Je cherche une fonciton dans Excel qui me permet de diviser cette chaine caractere 27.03.2008 08:56:00; 03.04.2008 11:53:00; 10.04.2008 12:24:00 dans trois cellule différentes par exemple ici A1, A2, A3 A1= 27.03.2008 (ou A1= 27.03.2008... www.commentcamarche.net/forum/affich-6317967-diviser-chaine-caractere-excel
Pb en vba : traitement chaîne vide = Null (Résolu)J'ai créé un formulaire de recherche par mot clef sous access avec un text box nommé "mot_clef" et un bouton qui me permet d'ouvrir un autre formulaire. Je souhaite obliger l'utilisateur à renseigner le text box. J'ai donc fait un... www.commentcamarche.net/forum/affich-1407471-pb-en-vba-traitement-chaine-vide-null
VB6/VBA Transformer nombre en texteVB6/VBA Transformer nombre en texte Introduction Préliminaires VB6 Dans le module de la forme Dans Module1 Introduction La fonction peut transformer des nombres de l'unité jusqu'à 999 tera. Prend en compte la syntaxe pour le français... www.commentcamarche.net/faq/sujet-11100-vb6-vba-transformer-nombre-en-texte
[Programmation] Polices de caractères pour programmeurCourrier: Un mauvais choix La plupart des programmeurs utilisent la police de caractères Courrier pour travailler. C'est un mauvais choix, car cette police est peu lisible. En taille 9, il est impossible de distinguer 0 (zéro) de O (lettre... www.commentcamarche.net/faq/sujet-3960-programmation-polices-de-caracteres-pour-programmeur
Sed - Introduction à SED - Part ISED - The Stream EDitor - Part I Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED" un... www.commentcamarche.net/faq/sujet-9536-sed-introduction-a-sed-part-i
Vba Excel Chaine caractère recherche multiple (Résolu)Salut, Je voudrais écrire une macro excel pour vérifier si ce que contient ma cellule appartient à une liste de valeurs que j'ai définie ou qui est présente dans une plage de cellules que j'indique dans ma macro. Si oui la macro devra faire... www.commentcamarche.net/forum/affich-3624003-vba-excel-chaine-caractere-recherche-multiple
Syntaxe Chaine Caractère (Résolu)Bonjour tout le monde, Voilà, en fait je voudrais savoir si quelqu'un connais un bon tuto pour comprendre la syntaxe des chaines de caractère du genre : $syntax_mail = '#^[\w.-]+@[\w.-]+\.[a-zA-Z0-9]{2,15}$#i'; ou $syntax_zipcode =... www.commentcamarche.net/forum/affich-7349979-syntaxe-chaine-caractere
Traitement de caractère speciaux (Résolu)Bonjour, Existe t-il une fonction pour transformer les caractures é è à ... en valeur hexa ou decimal ? Je voudrais remplacer ces lignes : $url = str_replace ( ' ' , '%20' , $url ); $url = str_replace ( 'é' ,... www.commentcamarche.net/forum/affich-7428587-traitement-de-caractere-speciaux
VBScript - Les fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes (InputStrings), selon les critères passés en argument. Value représente la chaîne à chercher. Include est une... www.commentcamarche.net/vbscript/vbs-fonctions-chaines-caracteres.php3
Javascript - L'objet String string est un mot anglais qui signifie "chaîne", il s'agit en fait de chaîne de caractères. L'objet String est un objet qui contient un certain nombre de propriétés et de méthodes permettant la manipulation de chaînes de caractères. L'objet string a... www.commentcamarche.net/javascript/jsstring.php3
Javascript - L'objet RegExp L'objet RegExp est un objet permettant de manipuler des expressions régulières, c'est-à-dire des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, afin de trouver des portions de la chaîne correspondant au... www.commentcamarche.net/javascript/jsregexp.php3
Toutes les réponses pour « [VBA] Traitement d'une chaine de caractère »