[RESOLU]VBA Analyser texte dans une colonne et écrire dans la colonne si condition ok

Bichonnet

XLDnaute Junior
Bonjour le forum,

Après quelques heures de recherche et de lecture au travers des fils existants, je fais appel à une bonne âme pour m'aider à résoudre ma question :p

Je dois avoir un bug dans mon neurone VBAien mais je n'arrive pas à écrire le bout de code me permettant de faire ceci :

Analyser toutes les cellules de ma colonne A et SI on y trouve un texte "bonjour", "coucou" ou "hello" ALORS dans la colonne d'à côté, sur la même ligne, on écrit quelque chose.

En formule excel ça donnerait :
=IF(OR(A1="Bonjour",A1="coucou",A1="Hello"),"on going","N/A")

En code VBA, ça devrait donner quelque chose comme

Code:
Sub Affichage()
Dim i As Integer

For Each i In Sheets("Sheet1").Range("A:A")

   If Sheets("Sheet1").Cell(i, 1).Value = "z" Then
   Sheets("Sheet1").Cell(i, 2).Value = "on going"
   End If
'Next
    
End Sub

J'ai dû faire une erreur d'écriture quelque part ou bien l'idée même du code est erronée ?

Merci d'avance !

En pièce jointe le fichier :)
 

Pièces jointes

  • Book1.xlsm
    12.7 KB · Affichages: 68
  • Book1.xlsm
    12.7 KB · Affichages: 68
  • Book1.xlsm
    12.7 KB · Affichages: 81
Dernière édition:

Isab

XLDnaute Occasionnel
Re : VBA Analyser texte dans une colonne et écrire dans la colonne à côté si conditio

Bonjour

comme ça peut-être:

Code:
Sub Affichage()
For Each i In Sheets("Sheet1").Range("A:A")
If i = "z" Then i.Offset(1, 1).Value = "on going"
Next
End Sub

a+
 

titiborregan5

XLDnaute Accro
Re : VBA Analyser texte dans une colonne et écrire dans la colonne à côté si conditio

Bonjour bichonnet, le forum,

je n'écris pas ma boucle comme toi mais je ne sais pas si ton code est faux...
De plus, je dirais qu'on écrit cells et non cell...

VB:
'pour balayer jusqu'à la dernière cellule remplie en A
for i = 1 to sheets(1).range("a65000").end(xlup).row
if cells(i,1)="Bonjour" or cells(i,1)="Hello" or ... then
cells(i,2)="on going"
else 
cells(i,2)="N/A"
end if
next

En espérant que ça t'aide?

Edit: bonjour Isab!
 

Efgé

XLDnaute Barbatruc
Re : VBA Analyser texte dans une colonne et écrire dans la colonne à côté si conditio

Bonjour Bichonnet
En utilisant For each, tu utilise un range et pas in integer.
Donc I représente chaque cellule:
VB:
Sub Affichage_2()
Dim I As Range
    For Each I In Sheets("Sheet1").Range("A:A")
        If I.Value = "z" Then
            I.Offset(0, 1).Value = "on going"
        End If
    Next I
End Sub

Mais est-il nécessaire de vérifier toutes les cellules?
Pourquoi ne pas limité la casse en réduisant aux cellules remplies?
VB:
Sub Affichage_3()
Dim I As Range
With Sheets("Sheet1")
    For Each I In .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
        If I.Value = "z" Then
            I.Offset(0, 1).Value = "on going"
        End If
    Next I
End With
End Sub

Cordialement

EDIT
Bonjour Isab, titiborregan5, A la bourre le Efgé ce matin :D
 

Efgé

XLDnaute Barbatruc
Re : VBA Analyser texte dans une colonne et écrire dans la colonne à côté si conditio

Re

En prenant en compte le N/A, j'écrirai ainsi :
VB:
Sub Affichage_3()
Dim I As Range
With Sheets("Sheet1")
    For Each I In .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
        I.Offset(0, 1).Value = IIf(I.Value = "z", "on going", "N/A")
    Next I
End With
End Sub
Cordialement
 

Bichonnet

XLDnaute Junior
Re : VBA Analyser texte dans une colonne et écrire dans la colonne à côté si conditio

Bonjour Efgé, Isab, titiborregan5 ;)

Merci pour vos réponses rapides.

C'est en effet une remarque pertinente, rien ne sert de surveiller tout, seules les cellules remplies ça suffit :-D

Ca m'aide en effet :D

Autre question : quel est le meilleur moyen pour que la macro tourne "en continu" ? La faire tourner dès qu'il y a un changement dans une cellule ou un clic ou..ou ..or or or ? :confused::eek::p
 

Bichonnet

XLDnaute Junior
Re : VBA Analyser texte dans une colonne et écrire dans la colonne à côté si conditio

Re,

Merci pour les différentes solutions.

Pour le faire tourner, ici ca parait simple mais mon tableau est plus long et les conditions plus nombreuses.
Ca me permet de le partager sans que les formules soient écrasées.

Mais j'ai vu un autre poste sur le sujet donc je clôture celui-ci vu que ma question initiale n'est désormais plus une question :-D

Merci à vous,

Bonne journée !
 

Discussions similaires