Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…