Chaîne de caractère : extraction et copie

EpsilonOne

XLDnaute Nouveau
Bonjour,

je débute en VBA et j'ai fait la macro suivante :

Code:
Sub Maj_Statut()

Dim Cellule As Range
Dim CellRecep As Long
Dim Car As Long
Dim Statut As String
Dim y As Long


Sheets("DBrut").Activate
y = 2
'x = CStr(Range("A" & y))
For Each Cellule In Range("A2:A20")
    For Car = InStr(Range("A" & y), "F") To InStr(Range("A" & y), "é")
        If Mid(Cellule.Value, Car, 1) <> "" Then
            Statut = Statut & Mid(Cellule.Value, Car, 1)
        Else
            Sheets("Incidents").Range("A" & y).Offset(Cellrecept, 0).Value = Statut
            Statut = ""
            Cellrecept = Cellrecept + 1
        End If
    Next Car
    Sheets("Incidents").Range("A" & y).Offset(Cellrecept, 0).Value = Statut
    Statut = ""
    Cellrecept = Cellrecept + 1
Next Cellule
End Sub

Ça marche pas trop mal, sauf que la fonction InStr ne me renvoie pas la bonne valeur :mad: et je ne vois pas pourquoi elle renvoie une valeur erronée ?

Si l'un d'entre vous à une idée ?

Cordialement
 

Pièces jointes

  • Test.xls
    16.5 KB · Affichages: 76
  • Test.xls
    16.5 KB · Affichages: 82
  • Test.xls
    16.5 KB · Affichages: 83

bqtr

XLDnaute Accro
Re : Chaîne de caractère : extraction et copie

Bonjour EpsilonOne et bienvenue

Peux tu préciser ce que tu cherches à faire ?
Tu souhaites récupérer le mot "Fermé". Si c'est le cas, quand ce mot n'existe pas que faut-il faire.

A+
 

kjin

XLDnaute Barbatruc
Re : Chaîne de caractère : extraction et copie

Bonsoir, bonsoir bqtr
Comme le fichier n'a rien à avoir avec la macro, sans vraiment savoir où il faut mettre le résultat, avec le fichier fourni, compte tenu de ce que j'ai compris
Code:
Sub Maj_Statut()
With Sheets(1)
For Each Cel In .Range("A1:A19")
If Cel Like "*Fermé*" = True Then
Sheets(2).Range("A" & Cel.Row) = "Fermé"
End If
Next
End With
End Sub
A+
kjin
 

EpsilonOne

XLDnaute Nouveau
Re : Chaîne de caractère : extraction et copie

Bonjour,

merci pour vos réponses.

en effet, je cherche à récupérer "Fermé" ou "En attente" ou "En cours", et à les copier dans une autre feuille en respectant le numéro de la cellule. Si aucun des mots n'est trouvés, la macro devra afficher une cellule vide.

Cordialement
 

kjin

XLDnaute Barbatruc
Re : Chaîne de caractère : extraction et copie

Bonjour,
As tu au moins testé le code fourni :rolleyes:
Le code modifié pour récupérer en plus "Nouveau" et "En cours"
Code:
Sub Maj_Statut()
With Sheets("Dbrut")
For Each cel In .Range("A1:A19")
If cel Like "*Fermé*" = True Then Sheets("Incidents").Range("A" & cel.Row) = "Fermé"
If cel Like "*Nouveau*" = True Then Sheets("Incidents").Range("A" & cel.Row) = "Nouveau"
If cel Like "*En" & " " & "cours*" = True Then Sheets("Incidents").Range("A" & cel.Row) = "En cours"
Next
End With
End Sub
A+
kjin
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Chaîne de caractère : extraction et copie

Bonjour à tous

Une autre façon en utilisant Switch
(mais cette solution ne fonctionne que
si les valeurs son rigoureusement égales
à Fermé , Nouveau, En cours, En attente

Code:
Sub Maj_Statut_avecSwitch()
'noms des feuilles changées
'pour faire le test
With Sheets(1)
For Each cel In .Range("A1:A19")
Sheets(2).Range("A" & cel.Row) = _
Switch(cel = "Fermé", "Fermé", _
cel = "Nouveau", "Nouveau", _
cel = "En cours", "En cours", _
cel = "En attente", "En attente")
Next
End With
End Sub
 
Dernière édition:

EpsilonOne

XLDnaute Nouveau
Re : Chaîne de caractère : extraction et copie

Bonjour à tous

Une autre façon en utilisant Switch
(mais cette solution ne fonctionne que
si les valeurs son rigoureusement égales
à Fermé , Nouveau, En cours, En attente

Code:
Sub Maj_Statut_avecSwitch()
'noms des feuilles changées
'pour faire le test
Sub Maj_Statut()
With Sheets(1)
For Each cel In .Range("A1:A19")
Sheets(2).Range("A" & cel.Row) = _
Switch(cel = "Fermé", "Fermé", _
cel = "Nouveau", "Nouveau", _
cel = "En cours", "En cours", _
cel = "En attente", "En attente")
Next
End With
End Sub

merci :) pour le code, je regarde ça...
 

Statistiques des forums

Discussions
312 685
Messages
2 090 938
Membres
104 703
dernier inscrit
romla937