Macro Excel qui marche pas :-(

francois13100 Messages postés 4 Statut Membre -  
francois13100 Messages postés 4 Statut Membre -
Bonjour, je cherche a executer une macro qui a l'air simple sur excel: elle doit "reperer" le chiffre entre parentheses dans la colonne A, que j'importe depuis un Pdf en copié-collé.
Pour exemple , le texte affiché est blalbalbabla(1234)blbabab(321)

J'ai donc penser définir les parenthèses comme limites, mais je ne sais pas finaliser l'ecriture... quelqu'un peut-il SVP corriger ce brouillon qui ne fonctionne pas:

Sub SandS()

Dim Text As String
Dim Cd As String
Dim Cf As String
Dim Numg As String
Dim D As Integer
Dim F As Integer

Cd = "("
Cf = ")"

For Each Cell In Selection
Text = Cell.Value

For i = 1 To Len(Text)
If Mid(Text, i, 1) = Cd And D < i Then
D = i
End If
If Mid(Text, i, 1) = Cf And F < i Then
F = i
End If
If D <> 0 And F <> 0 Then
Numg = Mid(Text, D + 1, F - D - 1)
GoTo A:
End If

Next i
A:
If Numg <> "" And Numg <> Cell.Offset(-1, 1).Value Then
Cell.Offset(0, 1).Value = Numg
Else: Cell.Offset(0, 1).Value = Cell.Value
End If
D = 0
F = 0
Numg = ""
Next Cell

End Sub

J'ai du faire une erreur (ou plusieurs!!) mais je m'y connais peu, et ca me serait fort utile si ca marchait!!

Merci d'avance a tous ceux qui se donneront la peine de me lire, voire de me répondre !!
A voir également:

2 réponses

darwin42 Messages postés 265 Statut Membre 67
 
Salut François,

Je viens d'examiner ton code. Apparemment, le problème vient de la ligne
If Numg <> "" And Numg <> Cell.Offset(-1, 1).Value Then


Dans Cell.Offset, tu compares la valeur de Numg avec la valeur de la ligne précédente (le -1) de la colonne suivante (le 1) (ex : tu compares A5 et B4). Ca me parait bizarre que tu veuilles vraiment faire ça, mais maintenant, je ne sais pas du tout comment est organisé ton tableau Excel, c'est peut-être normal.

Donc, lorsque tu lis la ligne A1, il ne trouve pas la ligne précédente (normal puisqu'il n'y a pas de ligne B0) et du coup, il plante.

Je suis parti du principe que "blalbalbabla(1234)blbabab(321)" étaient dans 2 cellules différentes, soit A1=blalbalbabla(1234) et B2=blbabab(321).
Si c'est bien ça, le plus simple serait de supprimer la condition
And Numg <> Cell.Offset(-1, 1).Value

En faisant comme ça, la macro te recopie les valeurs entre parenthèse s dans la colonne suivante. Tiens moi au courant si ça marche et sinon, explique moi plus précisément ce que tu veux faire.
0
francois13100 Messages postés 4 Statut Membre
 
Merci a toi de t'etre penché sur mon problème!

J'y comprends pas grand chose en Vba et on m'a expliqué cette Macro notée sur une feuille volante a la pause café...

En fait je joue a un jeu sur internet, qui edite une sorte de "newsletter" en mode pdf... Dans excel j'ai une DB avec presque tous mes "adversaires"

Pour exporter le texte du Pdf vers Excel je fais un simple copié-coller, donc tout est dans la case A. Je pourrais manuellement reprendre les numeros qui m'interessent, mais la macro simplifierait grandement le travail...!!
Dans la forme: ababababbababb(1234)ababababaab(321) c'est Nom(N°)Equipe(N°d'equipe)
Grace a la DB et une RechercheV, je pourrais tout visualiser, pour peu que le (N°) soit identifié...

J'espere ne pas etre trop confus!!

D'avance, merci beaucoup en tout cas!!!
0
JvDo Messages postés 2012 Statut Membre 859
 
Bonsoir,

une autre solution, sans macro :
1) tu remplaces les ")" par des "(" via le menu Edition/Remplacer....
2) tu convertis ta zone de données récupérées de ton PDF en mode délimité avec séparateur "("
3) tu obtiens directement 4 colonnes avec tes données

naturellement, tu peux enregistrer ces manipulations dans une macro

A+
0
francois13100 Messages postés 4 Statut Membre
 
Cher JvDo, merci de t'etre penché sur mon probleme!!

Ton idée me parait excellente, mais le point N°2 me pose probleme:
je ne sais pas faire cette conversion

J'ai compris l'idée, mais je ne sais pas dans quel menu aller chercher ce "separateur"

Merci d'avance en tout cas !!!
0
JvDo Messages postés 2012 Statut Membre 859 > francois13100 Messages postés 4 Statut Membre
 
Bonjour,

après avoir sélectionné ta zone (unicolonne bien entendu) des tes données, tu vas dans le menu données/convertir, tu choisis "délimité" puis tu coches "autre" et tu tapes "(" dans la case qui te permet de personnaliser le séparateur.

A+
0
francois13100 Messages postés 4 Statut Membre > JvDo Messages postés 2012 Statut Membre
 
Merci beaucoup, ca marche!!!!!

Excellente idée, je ne connaissais pas cette fonction, c'est parfait!!!

Un grand merci a toi, ca va bien m'aider!!

a+
0