Microsoft 365 Insérer texte dans colonne x si colonne y commence par...

  • Initiateur de la discussion Initiateur de la discussion Dravol
  • Date de début Date de début

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 !

Dravol

XLDnaute Junior
Bonjour tout le monde,

besoin d'aide sur le sujet ci-dessous svp :
1- J'ai une colonne B avec du texte et des cellules vides
2- J'ai une colonne H avec du texte également

Explications :
À partir de la ligne 2.
Si colonne H commence par la lettre O ou > alors, mettre le texte OK dans la colonne B

Les plages concernées par le code sont :
pour B => B2:B20000
pour H => H2:H20000

Dans l'attente de vos retours^^

Drav.
 

Pièces jointes

  • test.jpg
    test.jpg
    167.5 KB · Affichages: 15
J'ai testé en recopiant le tableau A2:O8 sur 35 000 lignes.

Chez moi sue Win 11 Excel 2019 la macro s'exécute en 0,6 seconde c'est très acceptable.
Bonjour Job75,

J'ai répondu un peu vite sur le code proposé.

Mes remarques en gras ci dessous :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, cc As Range
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
For Each c In Range("H1:H" & Cells.SpecialCells(xlCellTypeLastCell).Row)
Set cc = Cells(c.Row, 2)
If Not IsEmpty(c) And InStr("O>", UCase(Left(CStr(c), 1))) Then 'O> au lieu de > O
'Les > MP s'activent également même si je mets > O

If IsEmpty(cc) Then cc = "OK"
ElseIf UCase(CStr(cc)) = "OK" Then
cc = Empty
End If
Next
Application.EnableEvents = True 'réactive les évènements
End Sub

J'ai modifié le code de cette façon

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, cc As Range
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
For Each c In Range("H1:H" & Cells.SpecialCells(xlCellTypeLastCell).Row)
Set cc = Cells(c.Row, 2)
If Not IsEmpty(c) And InStr("> O", UCase(Left(CStr(c), 1))) Then '
If IsEmpty(cc) Then cc = "OK"
ElseIf UCase(CStr(cc)) = "OK" Then
cc = Empty
End If
If Not IsEmpty(c) And InStr("O", UCase(Left(CStr(c), 1))) Then '
If IsEmpty(cc) Then cc = "OK"
ElseIf UCase(CStr(cc)) = "OK" Then
cc = Empty
End If
Next
Application.EnableEvents = True 'réactive les évènements
End Sub

Malgré cela, comme précisé plus haut, La colonne B s'active en "OK" lorsque la colonne H comporte également > MP

J'ai l'impression que le code prend en compte uniquement > mais pas le O qui suit.


Drav
 

Pièces jointes

  • test 2.png
    test 2.png
    29.6 KB · Affichages: 11
- 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

  • Question Question
Microsoft 365 macro vba sumifs
Réponses
5
Affichages
594
  • Question Question
Microsoft 365 comparaison texte
Réponses
5
Affichages
679
Retour