Condition dans VBA
STEPH -
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention - 16 mai 2008 à 11:06
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention - 16 mai 2008 à 11:06
A voir également:
- Condition dans VBA
- Excel cellule couleur si condition texte - Guide
- Excel compter cellule couleur sans vba - Guide
- Excel condition ou - Guide
- Forum VB / VBA
- Forum Excel
3 réponses
bonsoir,
A+
Sub Separe() Dim T, i As Integer, e As Integer For e = 1 To Range("A1").SpecialCells(xlCellTypeLastCell).Row T = Split(Cells(e, 1).Text, ",") For i = 0 To UBound(T) select case T(i) case "bebe" : Cells(e, 2).Value = 1 : exit For case "bobo" : Cells(e, 2).Value = 2: exit For case "baba : Cells(e, 2).Value = 3: exit For end select Next i Erase T Next e End Sub
A+
Salut Steph,
tout ce qui marche est une bonne solution !
ta solution semble correcte, sauf qu'elle teste (sans doute inutilement) les 65000 lignes de la feuille.
la solution de lermitte est plus intéressante, parce que vachement plus rigoureuse ; pour ma part j'y ai appris beaucoup.
Autre proposition (simpliste) ci-dessous
Sub Bob()
Range("G1").Select
While ActiveCell.Offset(0, -1).Value <> ""
With ActiveCell
If .Offset(0, -1) Like "*bebe*" Then .Value = 1
If .Offset(0, -1) Like "*bobo*" Then .Value = 2
If .Offset(0, -1) Like "*boba*" Then .Value = 3
.Offset(1, 0).Activate
End With
Wend
End Sub
tout ce qui marche est une bonne solution !
ta solution semble correcte, sauf qu'elle teste (sans doute inutilement) les 65000 lignes de la feuille.
la solution de lermitte est plus intéressante, parce que vachement plus rigoureuse ; pour ma part j'y ai appris beaucoup.
Autre proposition (simpliste) ci-dessous
Sub Bob()
Range("G1").Select
While ActiveCell.Offset(0, -1).Value <> ""
With ActiveCell
If .Offset(0, -1) Like "*bebe*" Then .Value = 1
If .Offset(0, -1) Like "*bobo*" Then .Value = 2
If .Offset(0, -1) Like "*boba*" Then .Value = 3
.Offset(1, 0).Activate
End With
Wend
End Sub
Bonjour,
Avec un Select case... dés que la condition à été trouvée quitte le select (sans tester les autres) donc plus rapide, mais pas tellement quand uniquement 3 tests, mais avec les IF il y a moyen de remédier à cela.
Quand vous mettez du code... le sélectionner et clic sur le bouton Garder la mise en forme Ca met lesbalises <code> celui-ci étant alors plus facile a suivre.
A+
Avec un Select case... dés que la condition à été trouvée quitte le select (sans tester les autres) donc plus rapide, mais pas tellement quand uniquement 3 tests, mais avec les IF il y a moyen de remédier à cela.
Sub Bob() Range("G1").Select While ActiveCell.Offset(0, -1).Value <> "" With ActiveCell If .Offset(0, -1) Like "*bebe*" Then .Value = 1 ElseIf .Offset(0, -1) Like "*bobo*" Then .Value = 2 ElesIf .Offset(0, -1) Like "*boba*" Then .Value = 3 end if .Offset(1, 0).Activate End With Wend End Sub
Quand vous mettez du code... le sélectionner et clic sur le bouton Garder la mise en forme Ca met lesbalises <code> celui-ci étant alors plus facile a suivre.
A+
Salut Steph,
si tu sélectionnes ta colonne B, ton test sera sous la forme :
With ActiveCell
If .Offset(0, -1) Like "*bebe*" Then .Value = 1
If .Offset(0, -1) Like "*bobo*" Then .Value = 2
If .Offset(0, -1) Like "*boba*" Then .Value = 3
End With
Il n'y a plus qu'à rajouter une boucle pour traiter l'ensemble de tes données.
A suivre...
si tu sélectionnes ta colonne B, ton test sera sous la forme :
With ActiveCell
If .Offset(0, -1) Like "*bebe*" Then .Value = 1
If .Offset(0, -1) Like "*bobo*" Then .Value = 2
If .Offset(0, -1) Like "*boba*" Then .Value = 3
End With
Il n'y a plus qu'à rajouter une boucle pour traiter l'ensemble de tes données.
A suivre...
dsl je suis vraiment débutant en vba
donc mettre une boucle ca donnerait ca ?
Dim i As Integer
For i = 65000 To 1 Step -1
Cells(i, 7).Select
With ActiveCell
If .Offset(0, -1) Like "bebe" Then .Value = 1
If .Offset(0, -1) Like "bobo" Then .Value = 2
If .Offset(0, -1) Like "baba" Then .Value = 3
End With
Next i
mERCI
donc mettre une boucle ca donnerait ca ?
Dim i As Integer
For i = 65000 To 1 Step -1
Cells(i, 7).Select
With ActiveCell
If .Offset(0, -1) Like "bebe" Then .Value = 1
If .Offset(0, -1) Like "bobo" Then .Value = 2
If .Offset(0, -1) Like "baba" Then .Value = 3
End With
Next i
mERCI