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
    test.jpg
    167.5 KB · Affichages: 13

Dravol

XLDnaute Junior
Impossible de travailler sans un fichier excel surtout que l'on voit des #VALEURS
Un "petit" bonjour déjà....

Pas besoin de fichier Excel (certains internautes les refuses par mesure de sécurité).
J'ai juste besoin d'un code pour les colonnes B et H (rien à faire sur les autres colonnes).
La pièce jointe permet simplement d'illustrer mes explications.

Bonne journée.

Drav.
 

scraper

XLDnaute Nouveau
Un "petit" bonjour déjà....

Pas besoin de fichier Excel (certains internautes les refuses par mesure de sécurité).
J'ai juste besoin d'un code pour les colonnes B et H (rien à faire sur les autres colonnes).
La pièce jointe permet simplement d'illustrer mes explications.

Bonne journée.

Drav.
La colonne B affaire est totalement vide alors tu me diras tu l'annonçais mais elle contiendrait qu'en même du texte : comment cela s'explique?
 

Phil69970

XLDnaute Barbatruc
Bonjour @Dravol et @scraper

@Dravol

Pas besoin de fichier Excel (certains internautes les refuses par mesure de sécurité).

Je suis persuadé que si tu avais mis un fichier tu aurais depuis longtemps une ou plusieurs réponses
Libre à chacun d'ouvrir ou non le fichier.

Sur l'image il me semble voir un tableau structuré mais pas sur !!!! (c'est aussi à cela qu'un fichier sert )

1) Si tu as un TS :

Une simple formule en B2 devrait faire affaire
=SI(GAUCHE([@[Code article]];1)="O";"OK";SI(GAUCHE([@[Code article]];1)=">";"OK";"Non Ok"))

Et si tu veux juste "OK" et rien (à la place de "Non OK"
=SI(GAUCHE([@[Code article]];1)="O";"OK";SI(GAUCHE([@[Code article]];1)=">";"OK";""))

2) Si tu n'as pas de TS

Une simple formule en B2 devrait faire affaire
=SI(GAUCHE(H2;1)="O";"OK";SI(GAUCHE(H2;1)=">";"OK";"Non Ok"))

Sans TS il faut étirer la formule vers le bas ;)

Et si tu veux juste "OK" et rien (à la place de "Non OK"

=SI(GAUCHE(H2;1)="O";"OK";SI(GAUCHE(H2;1)=">";"OK";""))

Sans TS il faut étirer la formule vers le bas ;)

3) Et si tu veux en VBA ==> Pas de fichier = Pas de code de ma part car il y a trop d'inconnu comme nom de la feuille et TS etc..... et je n'aime pas feuilletonner o_O
 

Dravol

XLDnaute Junior
Bonjour à tous

@Dravol :
Perso cela sera sans moi car je suis persuadé que le fichier n'est pas représentatif du vrai fichier du demandeur.

De plus une simple formule suffit comme dans la colonne A ou il y a une déjà formule.

D'une, cet exemple est représentatif de mon fichier source qui a un lien avec d'autres onglets pour des extractions de données avec un ERP (inutile de vous polluer avec les autres onglets et les autres codes que j'ai créé et qui sont confidentiels).

Deuxièmement, si je vous demande un code VBA c'est que j'ai besoin d'un code et pas d'une formule -_-
Pour une formule je n'aurais pas eu besoin de votre aide.

Vous voyez bien que les cellules B5 à B8 comportent du texte.... Elles viennent de l'extraction de mon ERP donc il ne faut pas écraser ce texte par une formule.
Je ne vais pas vous envoyer mon fichier avec les 30 000 lignes, aucun intérêt pour vous.

Quel est le problème de répondre avec un code simple pour une saisie automatique "OK" de la colonne B lorsque nous avons "O" ou">" dans la colonne H avec les plages que j'avais donné en début de post :
pour B => B2:B20000
pour H => H2:H20000
Si B comporte déjà du texte alors ne rien faire.
Je répète donc que le code doit simplement générer le texte OK dans les cellules de la colonnes B lorsqu'il détecte que les cellules de la colonne H commencent par O ou >. C'est tout !

J'ai juste besoin de la logique du code et ensuite je l'adapterai à mon vrai fichier.
Je modifierai le code si nécessaire : nom de la feuille, plages, texte de saisie auto, ajout de critères...

En clair, je ne vous demande pas de me servir sur un plateau le code qui répond à 100% à mon fichier.

Pour finir, si toutes ces données ne vous conviennent pas, j'en suis désolé. Je tenterai ma chance sur une autre plateforme. Sans doute que ma demande n'est pas suffisamment explicite.

A+
 

job75

XLDnaute Barbatruc
Dans le code de la feuille :
VB:
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
Next
Application.EnableEvents = True 'réactive les évènements
End Sub
La macro se déclenche quand on modifie ou valide une cellule quelconque.
 

Pièces jointes

  • test.xlsm
    20.3 KB · Affichages: 4
Dernière édition:

Dravol

XLDnaute Junior
Dans le code de la feuille :
VB:
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
Next
Application.EnableEvents = True 'réactive les évènements
End Sub
La macro se déclenche quand on modifie ou valide une cellule quelconque.

Bonjour job75,

Merci pour ce code, effectivement ça fonctionne bien :)
Je vais pouvoir l'adapter à mon fichier.

Bonne semaine.

Drav




 

Discussions similaires

Réponses
16
Affichages
1 K

Statistiques des forums

Discussions
312 215
Messages
2 086 321
Membres
103 178
dernier inscrit
BERSEB50