Condition dans VBA
Fermé
STEPH
-
15 mai 2008 à 18:22
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 16 mai 2008 à 11:06
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 16 mai 2008 à 11:06
A voir également:
- Condition dans VBA
- Excel cellule couleur si condition texte - Guide
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Condition et excel - Guide
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
3 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
15 mai 2008 à 22:37
15 mai 2008 à 22:37
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+
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
309
16 mai 2008 à 10:16
16 mai 2008 à 10:16
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
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
16 mai 2008 à 10:56
16 mai 2008 à 10:56
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+
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
309
>
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
16 mai 2008 à 11:04
16 mai 2008 à 11:04
Merci pour les explications.
Où se trouve le bouton Garder la mise en forme, stp ? dans CCM ? dans VBE ?
I.
Où se trouve le bouton Garder la mise en forme, stp ? dans CCM ? dans VBE ?
I.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
>
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
16 mai 2008 à 11:06
16 mai 2008 à 11:06
Dans CCM..
Dans la barre d'outils juste au dessus de la fenêtre d'édition du message (c'est le bouton qui est blanc)
Dans la barre d'outils juste au dessus de la fenêtre d'édition du message (c'est le bouton qui est blanc)
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
309
15 mai 2008 à 19:13
15 mai 2008 à 19:13
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