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

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

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
    167.5 KB · Affichages: 15

Dravol

XLDnaute Junior
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
    29.6 KB · Affichages: 11

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…