Macro formules ne rien faire en cas d'erreurs

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

titiborregan5

XLDnaute Accro
Bonjour à tous,

je rencontre un problème sur une sorte de gestion d'erreurs.
J'ai une macro qui me permet de récupérer les caractères jusqu'au signe "/" puis les caractères qui sont après le signe "/" + 2 sur 4 caractères...

Mon problème est que certaines cellules n'ont pas de / et je voudrais qu'elles ne soient pas traitées du tout...

Je vous joins mon fichier, ce sera plus clair...

mon code au cas où
Code:
Sub val()

For i = 1 To Range("c5").End(xlDown).Row
On Error Resume Next
a = Application.Trim(Left(Cells(i, 3), Application.Find("/", Cells(i, 3)) - 1))
If IsError(a) Then
Cells(i, 1) = ""
Else
Cells(i, 1) = a
End If

'Cells(i, 1) = Application.Trim(Left(Cells(i, 3), Application.Find("/", Cells(i, 3)) - 1))
'y = Application.Search("/", Cells(i, 3)) + 2
On Error Resume Next
x = Mid(Cells(i, 3), (Application.Search("/", Cells(i, 3)) + 2), 4)
If Not IsError(x) Then
Cells(i, 2) = x
Else
Cells(i, 2) = ""
End If

Next

Un grand merci d'avance

Tibo
 

Pièces jointes

Re : Macro formules ne rien faire en cas d'erreurs

Bonjour titiborregan5

J'ai l'impression que tu te tortures les neurones

A tester:

Code:
Sub val1()
For i = 1 To Range("c5").End(xlDown).Row
  If InStr(Range("c" & i), "/") <> 0 Then
   Cells(i, 2) = Mid(Cells(i, 3), (Application.Search("/", Cells(i, 3)) + 2), 4)
  End If
Next
End Sub
 
Re : Macro formules ne rien faire en cas d'erreurs

Bonjour titiborregan5,

Avec Instr pas besoin de On Error Resume Next :

Code:
Sub val()
Dim c As Range, p%
For Each c In Range("C5", [C5].End(xlDown))
  p = InStr(c, "/")
  If p Then
    c(1, -1) = Left(c, p - 1)
    c(1, 0) = Mid(c, p + 2, 4)
  Else
    c(1, -1).Resize(, 2).ClearContents
  End If
Next
End Sub
Edit : salut pierrejean, pas rafraîchi 🙂

A+
 
Re : Macro formules ne rien faire en cas d'erreurs

Hello Pierrejean et job.

Je me suis servi du code de Pierrejean, qui a marché direct...
J'avoue que je ne maîtrise pas du tout ces instructions ni même en formule du coup j'y suis allé à tatons...
Il me fallait juste écrire correctement ma condition avec le if où je bloquais...

Je garde en mémoire le instr...


Merci à vous 2


Toujours aussi bien ce forum!!!
 
Re : Macro formules ne rien faire en cas d'erreurs

Re,

Pour le fun une solution plus concise :

Code:
Sub val()
Dim c As Range, p%
For Each c In Range("C5", [C5].End(xlDown))
  p = InStr(c, "/")
  c(1, -1) = Left(c, IIf(p, p - 1, 0))
  c(1, 0) = Mid(c, p + 2, IIf(p, 4, 0))
Next
End Sub
A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
914
Réponses
15
Affichages
788
Réponses
8
Affichages
782
Réponses
4
Affichages
735
Retour