nico80310
Messages postés20Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention 3 août 2009
-
11 juin 2009 à 16:09
nico80310
Messages postés20Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention 3 août 2009
-
15 juin 2009 à 20:48
Bonjour à tous,
je suis en train de réaliser une application excel avec macros et j'ai un petit soucis.
j'ai la colonne H de mon tableau ou il y a des informations écrites. Mon but est de supprimer tous les caractères qui se situent avant la première lettre de ma colonne Par exemple dans ma colonne il y a écrit : ... essai. Je voudrais que dans ma cellule il y est écrit essai et non ... essai
nico80310
Messages postés20Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention 3 août 2009 11 juin 2009 à 16:17
j'ai eu le même problème avec des chiffres mais j'ai utilisé la fonction "IsNumeric" et j'ai réussi à le régler mais je ne trouve pas l'équivalent pour les lettres
cs_nandinho
Messages postés14Date d'inscriptionmercredi 10 juin 2009StatutMembreDernière intervention10 juillet 2009 11 juin 2009 à 20:51
bonjour,
En supposant que la phrase est dans la cellule a1, je cherche le dernier point et je prends le reste comme mot utile, mieux, s'il y a un espace avant le mot recherché, remplace "." par " ".
Sub teste()
caractere = 1
1
nbre = InStr(caractere, Range("a1"), ".", 1)
If nbre <> 0 Then
If nbre_bis < nbre Then nbre_bis = nbre
caractere = nbre + 1
GoTo 1
End If
mot = Mid(Range("a1"), nbre_bis)
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_nandinho
Messages postés14Date d'inscriptionmercredi 10 juin 2009StatutMembreDernière intervention10 juillet 2009 12 juin 2009 à 19:17
Bonjour, Le message veut dire que dans la cellule a1, il n'y a pas le caractère recherché, donc nbre_bis 0 d'où l'erreur. Pour éviter cela, nous pouvons utiliser une condition -si nbre_bis est égale à zéro, c'est à dire, s'il n'y a pas le caractère recherché, mot à la cellule a1
Sub teste()
caractere = 1
1
nbre = InStr(caractere, Range("a1"), ".", 1)
If nbre <> 0 Then
If nbre_bis < nbre Then nbre_bis = nbre
caractere = nbre + 1
GoTo 1
End If
If nbre <> 0 Then
mot = Mid(Range("a1"), nbre_bis)
else
mot = range("a1")
end if
End Sub
Je ne sais pas combien de caractères il y a avant le mot à récupérer.
Je vais donc pas par pas rechercher tous les caractères.
Si je trouve un, je ne sais pas si c'est le dernier donc je mémorise sont emplacement (nbre_bis) et vérifie s'il n'y a pas d'autres.
SI nbre = 0 ça veut dire qu'il n'y a pas le caractere recherché.
Donc le dernier emplacement mémorisé (nbre_bis) va me servir pour extraire (Mid) le mot désiré.
Effectivement, je n'ai pas déclaré les variables, ce n'est pas obligatoire avec mes options VBA. Je les declare uniquement pour les codes plus importants.
IMPORTANT
Pour utiliser ce code, il faut que la feuille contenant la cellule A1 soit la feuille active autrement il faut utiliser - sheet("nom de la feuille").range("A1").
cs_nandinho
Messages postés14Date d'inscriptionmercredi 10 juin 2009StatutMembreDernière intervention10 juillet 2009 12 juin 2009 à 22:38
Excuse-moi, j'ai oublié de te dire que le résultat ne s'affiche nul part car je ne sais pas ce que tu veux faire avec.
Si tu veux remplacer le contenu de la cellule a1 il faut rajouter range("a1").value = mot
tu peux remplacer a1 par une autre cellule si tu veux rapporter le résultat ailleurs.
Sub teste()
caractere = 1
1
nbre = InStr(caractere, Range("a1"), ".", 1)
If nbre <> 0 Then
If nbre_bis < nbre Then nbre_bis = nbre
caractere = nbre + 1
GoTo 1
End If
If nbre <> 0 Then
mot = Mid(Range("a1"), nbre_bis)
else
mot = range("a1")
end if
nico80310
Messages postés20Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention 3 août 2009 13 juin 2009 à 10:11
Je dois remplacer le contenu de la cellule je viens de tester la macro mais le problème c'est qu'il me remplace le contenu de la cellule par rien quand je mets une phrase avec ... devant.
cs_nandinho
Messages postés14Date d'inscriptionmercredi 10 juin 2009StatutMembreDernière intervention10 juillet 2009 13 juin 2009 à 14:35
Essai ça sinon il me faut savoir exactement le type de fichier que tu as, forme des cellules, etc... en résumé il me faudrait un exemplaire de ton fichier.
nico80310
Messages postés20Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention 3 août 2009 13 juin 2009 à 14:48
Pour l'exemplaire du fichier je ne peux pas te le donner car c'est du confidentiel.
Pour faire simple c'est un tableau excel avec un nombre de colonne fixe (95 Colonnes) et lignes variables en fonction des données sorties
Les données que je veux modifier se situent dans la colonne I à partir de la ligne 2
Pour les données qui se trouvent dans ces cellules elles ressemblent à cela :
TEST
... ESSAI
MESSAGE
... ... MESSAGE DE TEST
NOUVEAU MESSAGE
et ainsi de suite je voudrais avoir le résultat suivant :
TEST
cs_nandinho
Messages postés14Date d'inscriptionmercredi 10 juin 2009StatutMembreDernière intervention10 juillet 2009 15 juin 2009 à 20:38
Bonjour,
J'ai testé ce code qui fonctionne très bien chez moi.
S'il ne fonctionne pas chez toi c'est sûrement à cause des propriétés de ta feuille et de tes données.
Sub remlacer_les_points()
'activer la feuille ou se trouvent les données à remplacer
'remplace "feuil1" par le vrai nom de ta feuille ou
'utilise le numéro de la feuille dans le classeur - sheets(1).select
Sheets("feuil1").Select
'Savoir combien de lignes dans la colonne 1,
'bien sur il ne doit pas avoir de cellules vides au milieu des cellules pleines
'autrement il faut compter dans une colonne ou il n'y as pas de trous.
nbre_lignes = Application.WorksheetFunction.CountA(Range("a:a"))
'Faire une boucle pour travailler chaque ligne à l'aide d'une variable "chaque_ligne"
For chaque_ligne = 2 To nbre_lignes
'le contenu de la cellule sans les points est la variable "mot"
mot = Replace(Cells(chaque_ligne, 1), ".", "")
' il y a beaucoup d'espaces indésirables qu'il faut supprimer à l'aide de "trim"
mot = Trim(mot)
'il nous reste à saisir le résultat dans la cellule d'origine
Cells(chaque_ligne, 1).Value = mot
Next 'et on continue sur toutes les lignes de la colonne 1
End Sub