Macro Excel qui marche pas :-(
francois13100
Messages postés
4
Statut
Membre
-
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 !!
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:
- Macro Excel qui marche pas :-(
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
2 réponses
Salut François,
Je viens d'examiner ton code. Apparemment, le problème vient de la ligne
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
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.
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.
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+
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+
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!!!