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
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 ?
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
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
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
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
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 ?
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