Chercher et remplacer sous macro

lidenvice

XLDnaute Nouveau
Tout d'abord, j'espere ne pas parraitre stupide ou poser une question déjà posée. ou ne pas repondre correctement a la charte du forum.

Apres avoir longuement cherché sur tout les forums , sites d'aides et autres, et appris la fonction chercher, recherche ect attenantes, j'ai entrepris de changer les données selon deux criteres directement en automatique:

J'ai une liste de donnée que je copie et je colle sur un onglet excel.
Il arrive que dans ce copier-coller il y ai deux chiffre séparés par un espace ce qui foire le reste de mes feuilles.

J'aimerait que ma ou deux de mes macro puissent verifier puis supprimer , soit le dernier nombre soit le premier selon mon choix.

Merci de me repondre.
 

lidenvice

XLDnaute Nouveau
Ah oui je suis pas super clair :s

Voici un exemple

A1---------------------------- A2-------------------------A3
Planete : --------------------- Zatoba ------------------- Luma

Synthétiseur de deutérium--- 9 10 ---------------------- 9

Centrale électrique solaire--- 13 14 15 ------------------ 10


Donc mon but c'est de trouver un moyen de garder soit le premier nombre ( par exemple 13) ou le dernier (dans cet exemple ca pourrait etre 15) et d'appliquer cela seulement sur les lignes avec plusieurs nombres.

Je veux bien vous envoyer le fichier mais sans le copier coller ca va pas vous aider. beaucoup

Message édité par: lidenvice, à: 29/06/2005 21:53
 

lidenvice

XLDnaute Nouveau
Voici le fichier, je me dit que comme ca vous comprendrez peut etre mieux ce que je veux faire. [file name=EmpireU.zip size=25272]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/EmpireU.zip[/file]

Message édité par: lidenvice, à: 29/06/2005 23:01

Message édité par: lidenvice, à: 30/06/2005 10:10
 

Pièces jointes

  • EmpireU.zip
    24.7 KB · Affichages: 22

lidenvice

XLDnaute Nouveau
J'ajoute cette explication plus detaillée:

Je copie et je colle sur l'onglet empire des données ce trouvant sur la page HTML d'un jeu auquel je joue.
Ce copier coller me permet d'inserer dans mon tableau les variables concernant mes constructions et mes recherches.

Mon onglet Arbre appele les lignes (puisse que je peux ou non les avoir dans mon copier coller) correspondant a la dénomination.
Par exemple il cherche a ecrire sur la ligne les niveaux des neufs planetes pour 'Mine de cristal'

Ma macro empire, celle qui s'utilise grace a un boutton, supprime les liens HTML, remplace les - par des 0, et enleve les () pour ensuite mettre en page le tout. Jusque là j'y suis arrivé seul en lisant et en testant.

Maintenant mon souci c'est de determiner si oui ou non il y a dans les niveaux ecrits dans une cellule il y a deux nombres ou un seul. Puis soit garder que le premier nombre soit garder que le dernier.
On peux tres bien avoir plusieurs nombres de suite dans la meme cellule.
Est ce que mes explications sont plus claires comme ca?

Ca fait trois jours que je cherches comment faire cela et je trouve pas :s
 
L

lidenvice

Guest
Apres mon 4 ieme jour a vouloir faire une macro et chercher par tout les moyens a faire ce que je voulait j'ai décidé de faire ca avec la methode batteau.

En fait j'ai trouvé la solution con: installer une formule supplémentaire incluant droite(2) et gauche(2) dans mes appels de donnés

Ca marche a touts les coups puisse qu'il est pas possible d'avoir de niveau plus élevé que deux chiffre dans l'un des nombres.


Merci de pas m'avoir aidé je sais pas ce que j'ai fait mais bon passons.
 

Hervé

XLDnaute Barbatruc
Bonsoir lidenvice

:)

Si tu n'a pas eu de réponse autres que celle de creepy(salut creepy), c'est surement que ton exposé n'etait pas très clair.

Dans ces cas là, il faut joindre un fichier très simple du style, j'ai ca comme donnée et je veux arriver à ca, comment qu'on fait ?

Apparement tu as trouvé ton bonheur à travers les formules, et j'en suis content.

Mais si tu veux une macro pour séparer les chiffres du style 1174/1254, il faut nous dire ou doivent etre renvoyé ces deux données, et si on doit supprimer un des deux chiffres, nous dire lequel.

en espérant te revoir parmis nous

salut
 

MichelXld

XLDnaute Barbatruc
bonjour Lidenvice , Creepy et Hervé

cette macro permet d'extraire toutes les valeurs numeriques d'une cellule

Sub extraireValeursNumeriquesCellule()
'michelxld le 09.04.2005
Dim i As Byte, Nb As Byte
Dim Cible As String, Resultat As String
Dim Nombre As Double

Cible = Range('A1')
'pour que fonction Val puisse reconnaitre decimales
Cible = Application.Substitute(Cible, ',', '.')
' pour gerer deux nombres qui se suivent
Cible = Application.Substitute(Cible, ' ', 'x')

For i = 1 To Len(Cible)
If IsNumeric(Mid(Cible, i, 1)) Then
Nombre = Val(Mid(Cible, i, Len(Cible) - i + 1))
Nb = Nb + 1
Resultat = Resultat & Nombre & vbLf
i = i + Len(Str(Nombre)) - 1
End If
Next

MsgBox 'Il y a ' & Nb & _
' valeurs numeriques dans la cellule ' & vbLf & Resultat
End Sub



si tu souhaite remplacer par la premiere valeur numerique de la cellule


Sub premierNombre()
'michelxld le 09.04.2005
Dim i As Byte
Dim Cible As String

Cible = Range('A1')
'pour que fonction Val puisse reconnaitre decimales
Cible = Application.Substitute(Cible, ',', '.')
' pour gerer deux nombres qui se suivent
Cible = Application.Substitute(Cible, ' ', 'x')

For i = 1 To Len(Cible)
If IsNumeric(Mid(Cible, i, 1)) Then
Range('A1') = Val(Mid(Cible, i, Len(Cible) - i + 1))
Exit For
End If
Next

End Sub



ou par la derniere donnée numerique


Sub dernierNombre()
'michelxld le 09.04.2005
Dim i As Byte
Dim Cible As String
Dim Nombre As Double

Cible = Range('A1')
'pour que fonction Val puisse reconnaitre decimales
Cible = Application.Substitute(Cible, ',', '.')
' pour gerer deux nombres qui se suivent
Cible = Application.Substitute(Cible, ' ', 'x')

For i = 1 To Len(Cible)
If IsNumeric(Mid(Cible, i, 1)) Then
Nombre = Val(Mid(Cible, i, Len(Cible) - i + 1))
i = i + Len(Str(Nombre)) - 1
End If
Next

Range('A1') = Nombre
End Sub



bon week end
MichelXld
 
L

lidenvice

Guest
Merci pour ces macro, je viens de les tester. sinon pour les explications confuses, veuillez m'excuser. :s

J'ai vraiment pensé que j'avais fait quelque chose qu'il fallait pas :)

Les macro semblent ne pas fonctionner certainement a cause du fait que le copier coller n'est jamais totalement identique. J'ai longuement cherché la raison et je n'ai pas trop compris car les macros de MichelXld devraient marcher :s

Donc voici le boulot que j'ai effectué avent votre reponce sur le sujet.

J'en ai profité pour travailler sur les modules et pour vous expliquer, j'ai mis des notes un peu partout. Il faut savoir que les onglets en jaunes sont faits par un autre internaute que je n'ai pas reussit a joindre.

Dites moi s'il vous plait, au moins si je suis plus clair maintenant. Et ce que vous pensez de la solution que j'ai adoptée.

Elle n'est pas parfaite puisse que quand le nombre est a un seul chiffre, elle plante, et que quand vous fermez pas le fichier avent chaque copier coller, elle inclus une erreur.

Mais pour le moment j'ai pas trouvé mieux puisse qu'elle fonctionne à 70%

Il faut dire que les copier coller du site en question ne sont pas pratiques du tout. Mais bon.

edit: Zut le fichier en question :D

Message édité par: lidenvice, à: 02/07/2005 19:26
 

Pièces jointes

  • Empire17.zip
    37.4 KB · Affichages: 23

lidenvice

XLDnaute Nouveau
Le fichier ne voulait pas passé j'ai donc enlevé tout ce qui n'avait pas à voir avec mon souci

Pour explications supplémentaires:

- Un niveau de recherche ou de batiment correspond à un ou deux chiffres. Chaque planète peux avoir jusqu'a 5 constructions en attente. Ca peux etre 5 mines métal ou autres ou moins.

- Le copier coller dépendant directement de votre niveau et de vos actions dans le jeu, les données et les lignes peuvent etre differentes entre une personne qui débute et une personne qui joue depuis tres longtemps.

- Après étude, il semble que malgres la détéction des nombres, la macro ne fasse rien quand le nombre ne fait qu'un chiffre ( par exemple dans le cas 1 2 ca fait rien. Et je me demande ce que ca ferait si j'avais 9 10 meme si je resolvait le probleme.

Au moment ou j'ecris ces lignes je teste la fonction SI() pour ce genre de souci. Je pense que je devrait trouver d'ici 4H :D
[file name=Empire17.zip size=38267]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Empire17.zip[/file]

Message édité par: lidenvice, à: 02/07/2005 19:41
 

MichelXld

XLDnaute Barbatruc
bonjour Lidenvice

je n'ai rencontré aucun probleme dans ton classeur
tu peux tester cet autre exemple qui utilises la fonction Split


bon dimanche
MichelXld
[file name=suppressionNombre.zip size=7169]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/suppressionNombre.zip[/file]
 

Pièces jointes

  • suppressionNombre.zip
    7 KB · Affichages: 19

lidenvice

XLDnaute Nouveau
En effet la macro marche impec c'est le site qui fait chier en fait :s

Il met de temps en temps un espace apres le dernier nombre, des fois il le met pas.

Bref rien qui m'a facilité les choses :D

En tout cas merci. Je continue a bosser sur mon tableau pour d'autres parties basées sur le point de depart que vous avez vu pour certains.

En esperant que je trouverait ce coup ci sans aide :)
 

Statistiques des forums

Discussions
312 282
Messages
2 086 757
Membres
103 389
dernier inscrit
DEDE86