Supprimer les 2 premiers caractères selon certain critères
Bonjour,
je m'appelle Yohanes et je m'excuse de vous déranger. J'ai un petit problème pour savoir comment supprimer les deux premiers caractères d'une cellule dans deux colonnes selon des conditions à partir d'un Userform.
Ces conditions sont les suivantes :
Si la cellule commence par "gu", "ku", kw" alors les deux premiers caractères (c'est à dire en fait le "gu", "ku", "kw" sont supprimés)
Si la cellule commence avec n'importe quel autre lettre, aucune suppression n'est faîte.
Voici ce que j'ai commencer à écrire, mais je ne sais pas rajouter la condition. Pourriez vous m'aider svp ?
Private Sub valider_Click()
Dim i As Long, j As Long, mot As String, participe As String, iRow As Long, iCol As Long, col As Long
Dim ws As Worksheet, pas As Worksheet, espace As Long, phrase As String, mot1 As String, nom As String
i = Me.premiere
j = Me.derniere
col = Me.colonne
Set ws = Worksheets("participe")
Set pas = Worksheets("Passes")
For iRow = i To j
mot = pas.Cells(iRow, 1).Value
ws.Cells(iRow, 1).Value = mot
ws.Cells(iRow, 2).Value = mot
For iCol = 3 To col
If pas.Cells(iRow, iCol).Value = "" Then
Else
participe = pas.Cells(iRow, iCol).Value
ws.Cells(iRow, 3).Value = participe
End If
Next
Next
Set pas = Worksheets("participe")
For iCol = 2 To 3
For iRow = 2 To 10000 ' à cet endroit j'aimerais insérer la condition si et seulement si
'le mot ou la phrase commence par les termes : "gu", "kw" ou "ku" dans les colonnes B et C alors...
'supprimer les deux premières lettres sinon pour tous les autres aucune suppression
mot1 = pas.Cells(iRow, iCol).Value
phrase = Mid(mot1, 3)
espace = InStr(phrase, " ")
mot = Left(phrase, espace)
mot = Replace(mot, " ", "")
nom = Mid(phrase, espace + 1)
pas.Cells(iRow, iCol).Value = phrase
Next
Next
On Error Resume Next
With Worksheets("participe")
.Activate
.PivotTables(1).PivotCache.Refresh
End With
Unload Me
End Sub
Petite explication :
L'userform copie des données d'une autre feuille et les dispatche en 3 colonnes dans la feuille "participe" : Colonne A l'infinitif, Colonne B le radical (qui est l'infinitif sans le gu, ku, kw) et Colonne C le participe passé (qui lui aussi ne devrait pas avoir le "gu", "ku", "kw". Mon problème est que pour les colonnes B et C la marque de l'infinitif le "gu", "ku", "kw" sont toujours là et quand j'utilise le code écrit plus haut la suppression affecte toute les cellules sans regarder préalablement si elles ont le défaut que je souhaite supprimer.
Merci d'avance
Bonjour
Avec un fichier cela serait plus facile
Essayes
Private Sub valider_Click()
Dim i As Long, j As Long, mot As String, participe As String, iRow As Long, iCol As Long, col As Long
Dim ws As Worksheet, pas As Worksheet, espace As Long, phrase As String, mot1 As String, nom As String
i = Me.premiere
j = Me.derniere
col = Me.colonne
Set ws = Worksheets("participe")
Set pas = Worksheets("Passes")
For iRow = i To j
mot = pas.Cells(iRow, 1).Value
ws.Cells(iRow, 1).Value = mot
ws.Cells(iRow, 2).Value = mot
For iCol = 3 To col
If pas.Cells(iRow, iCol).Value = "" Then
Else
participe = pas.Cells(iRow, iCol).Value
ws.Cells(iRow, 3).Value = participe
End If
Next
Next
Set pas = Worksheets("participe")
For iCol = 2 To 3
For iRow = 2 To 10000
' à cet endroit j'aimerais insérer la condition si et seulement si
'le mot ou la phrase commence par les termes : "gu", "kw" ou "ku" dans les colonnes B et C alors...
'supprimer les deux premières lettres sinon pour tous les autres aucune suppression
mot1 = pas.Cells(iRow, iCol).Value
Select Case Left(mot1, 2)
Case "gu", "kw", "ku" ' Le début commence par
phrase = Mid(mot1, 3)
espace = InStr(phrase, " ")
mot = Left(phrase, espace)
mot = Replace(mot, " ", "")
nom = Mid(phrase, espace + 1)
pas.Cells(iRow, iCol).Value = phrase
End Select
Next
Next
On Error Resume Next
With Worksheets("participe")
.Activate
PivotTables(1).PivotCache.Refresh
End With
Unload Me
End SubSi pas ça
Merci beaucoup de votre réponse rapide.
Le fichier était trop volumineux mais si ce code ne fonctionne pas, je vous ré-écris en l'attachant. En tout cas merci