[VB] Boucle
Résolu/Fermé
A voir également:
- [VB] Boucle
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Tv orange chargement en boucle ✓ - Forum TV & Vidéo
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
9 réponses
Utilisateur anonyme
2 mai 2005 à 19:26
2 mai 2005 à 19:26
re:
Avec cette sub, vérifie que les noms de feuilles sont valide!
Cette sub créé une feuille et y place tous les nomd de feuilles!
Sub TestNomFeuille()
Dim CetteFeuille As Worksheet
Dim I As Integer
ActiveWorkbook.Sheets.Add.Name = "NomFeuille"
I = 1
For Each CetteFeuille In Worksheets
Sheets("NomFeuille").Cells(I, 1).Value = CetteFeuille.Name
I = (I + 1)
Next CetteFeuille
End Sub
Lupin
Avec cette sub, vérifie que les noms de feuilles sont valide!
Cette sub créé une feuille et y place tous les nomd de feuilles!
Sub TestNomFeuille()
Dim CetteFeuille As Worksheet
Dim I As Integer
ActiveWorkbook.Sheets.Add.Name = "NomFeuille"
I = 1
For Each CetteFeuille In Worksheets
Sheets("NomFeuille").Cells(I, 1).Value = CetteFeuille.Name
I = (I + 1)
Next CetteFeuille
End Sub
Lupin
si themealarme est listbox
tu récuperes sa proprieté index attention
sans doute départ à 0
tu récuperes sa proprieté index attention
sans doute départ à 0
Tu devrais plutot déclarer une variable
Dim Mafeuille as Worksheet
et pour l'affecter (à mettre après ta recherche de la feuille correspondant au thème de l'utilisateur)
set Mafeuille = ActiveWorkbook.Worksheet("Feuil" & k)
et apres a chaque fois que tu voudras t'en servir tu feras simplement Mafeuille.cells(....)
ca devrait etre bon normalement
Dim Mafeuille as Worksheet
et pour l'affecter (à mettre après ta recherche de la feuille correspondant au thème de l'utilisateur)
set Mafeuille = ActiveWorkbook.Worksheet("Feuil" & k)
et apres a chaque fois que tu voudras t'en servir tu feras simplement Mafeuille.cells(....)
ca devrait etre bon normalement
par contre tet kil y'a un s a worksheet chais plus trop, donc ca donnerait
set Mafeuille = ActiveWorkbook.Worksheets("Feuil" & k)
set Mafeuille = ActiveWorkbook.Worksheets("Feuil" & k)
Merci pour ta réponse FMAT !!!
Ca fait plaisir de pouvoir trouver de l'aide en prog en temps réel !!!
Par contre, j'ai suivi tes conseils et la ligne de prog
Set Mafeuille = ActiveWorkbook.Worksheets("Feuil" & k)
provoque un bug dans le programme. J'ai pourtant déclaré Mafeuil : Dim Mafeuille As Worksheets
J'ai essayé avec un s et sans s à worsheet, mais il y a toujours un bug... Je vais continuer à chercher pourquoi mon programme ne tourne toujours pas et en tout cas, je te remercie pour ton aide...
Ca fait plaisir de pouvoir trouver de l'aide en prog en temps réel !!!
Par contre, j'ai suivi tes conseils et la ligne de prog
Set Mafeuille = ActiveWorkbook.Worksheets("Feuil" & k)
provoque un bug dans le programme. J'ai pourtant déclaré Mafeuil : Dim Mafeuille As Worksheets
J'ai essayé avec un s et sans s à worsheet, mais il y a toujours un bug... Je vais continuer à chercher pourquoi mon programme ne tourne toujours pas et en tout cas, je te remercie pour ton aide...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Armojax
Messages postés
1860
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
2 octobre 2024
1 528
29 avril 2005 à 18:06
29 avril 2005 à 18:06
Bonjour Lydia,
Tu peux essayer ça :
Ajx.
Tu peux essayer ça :
Sub Boucle() Select Case ThemeAlarm_Text Case "Air" k = 1 Case "Apnée" k = 2 End Select Sheets("Feuil" & k).Select For i = 2 To Range(Cells(1, 1), Cells(1, 1)).End(xlDown).Row MessageAlarme.AddItem Cells(i, 1).Value Next i End Sub
Ajx.
Salut Ajx,
Merci pour ton aide !!!
J'ai également suivi tes conseils qui m'ont été très utiles, surtout la partie concernant la valeur de mon indice k :
Select Case ThemeAlarme_Text
Case "Air"
k = 1
Case ...
End select
Par contre, la partie du programme qui sélectionne la bonne feuille Excel provoque un bug dans le programme que je ne sais pas résoudre :
Sheets("Feuil" & k).Select
J'ai donc essayé de déclarer une variable Mafeuille : Dim Mafeuille As Worksheets comme proposé par FMAT puis j'ai tenté un mélange de vos deux suggestions :
Set Mafeuille = ActiveWorkbook.Worksheets("Feuil" & k)
Ma feuille("Feuil" & k).Select
Mais là encore le programme ne fonctionne pas... Je vais donc chercher un peu plus en détail dans l'aide de VB pour tenter de trouver l'erreur. En tout cas, merci pour ton aide à bientôt peut-être si tu as une nouvelle suggestion.
Lydia.
Merci pour ton aide !!!
J'ai également suivi tes conseils qui m'ont été très utiles, surtout la partie concernant la valeur de mon indice k :
Select Case ThemeAlarme_Text
Case "Air"
k = 1
Case ...
End select
Par contre, la partie du programme qui sélectionne la bonne feuille Excel provoque un bug dans le programme que je ne sais pas résoudre :
Sheets("Feuil" & k).Select
J'ai donc essayé de déclarer une variable Mafeuille : Dim Mafeuille As Worksheets comme proposé par FMAT puis j'ai tenté un mélange de vos deux suggestions :
Set Mafeuille = ActiveWorkbook.Worksheets("Feuil" & k)
Ma feuille("Feuil" & k).Select
Mais là encore le programme ne fonctionne pas... Je vais donc chercher un peu plus en détail dans l'aide de VB pour tenter de trouver l'erreur. En tout cas, merci pour ton aide à bientôt peut-être si tu as une nouvelle suggestion.
Lydia.
Utilisateur anonyme
2 mai 2005 à 16:19
2 mai 2005 à 16:19
Salut,
Fait comme ceci :
Sub TestFeuille()
..Dim K As Integer
..Dim MaFeuille As Worksheet
..For K = 1 To 3
....Set MaFeuille = Worksheets("Feuil" & K)
....MsgBox MaFeuille.Name
..Next K
End Sub
Sous OXP, WXP ça roule très bien chez moi.
Lupin
Fait comme ceci :
Sub TestFeuille()
..Dim K As Integer
..Dim MaFeuille As Worksheet
..For K = 1 To 3
....Set MaFeuille = Worksheets("Feuil" & K)
....MsgBox MaFeuille.Name
..Next K
End Sub
Sous OXP, WXP ça roule très bien chez moi.
Lupin
Salut Arsène,
J'ai essayé ta suggestion dans mon programme :
For k = 1 To 24
Set MaFeuille = Worksheets("Feuil" & k)
MsgBox MaFeuille.Name
Next k
Mais il y a toujours un bug... Quand je disais que je débutais en VB...
En fait, les message d'erreurs sont les suivants :
Worksheets("Feuil" & k) = <l'indice n'appartient pas à la sélection>
et MaFeuille = nothing
Donc je ne sais pas si çà éclaire la lanterne d'un gentleman cambrioleur, en tout cas aucune ampoule n'est venue éclairer la mienne... Mais merci quand-même de ton aide...
Lydia.
J'ai essayé ta suggestion dans mon programme :
For k = 1 To 24
Set MaFeuille = Worksheets("Feuil" & k)
MsgBox MaFeuille.Name
Next k
Mais il y a toujours un bug... Quand je disais que je débutais en VB...
En fait, les message d'erreurs sont les suivants :
Worksheets("Feuil" & k) = <l'indice n'appartient pas à la sélection>
et MaFeuille = nothing
Donc je ne sais pas si çà éclaire la lanterne d'un gentleman cambrioleur, en tout cas aucune ampoule n'est venue éclairer la mienne... Mais merci quand-même de ton aide...
Lydia.
Utilisateur anonyme
2 mai 2005 à 22:31
2 mai 2005 à 22:31
re:
en fait :
Worksheets("Feuil" & k) = <l'indice n'appartient pas à la sélection>
-->> que vaut [K] ?
Le message t'indique que tu tente de sélectionner une feuille qui n'existe pas !
Lupin
en fait :
Worksheets("Feuil" & k) = <l'indice n'appartient pas à la sélection>
-->> que vaut [K] ?
Le message t'indique que tu tente de sélectionner une feuille qui n'existe pas !
Lupin
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
3 mai 2005 à 00:53
3 mai 2005 à 00:53
Salut,
J'ai vu ton souci et j'ai créer ce petit module pour une seule feuille et ça marche.
Il ne reste qu'à l'adapter à ton cas.
J'ai consideré dans mon module une seule feuille (donc k=1)
sub a()
Dim k as long, r as long
Dim i as long
k=1 ' donc la 1ere feuille
r=1 'initialisation de la variable ( on commence de la 1ere ligne)
Do
If IsEmpty(Sheets("feuil" & k).Cells(r,1)) Then
'on cherche dans la 1ere colonne
Exit Do
End If
r=r+1
Loop
MsgBox "numèro de ligne de la 1ere cell vide " & r
'on commence à la 1er ligne jusqu'à la dernière cellule non vide
For i=1 to r-1
'affiche le contenu des cellules non vides
MsgBox "contenu cells = " & Sheets("feuil" & k).Cells(i,1)
Next i
End Sub
Les MsgBox ne sont que pour tester.
Tu adaptes après à ton exercice :
MessageAlarme.AddItem Sheets("feuil" & k).Cells(i,1)
Je vais écrire encore une fois le module sans commentaires
-------------------------------------------------------------------
sub a()
Dim k as long, r as long
Dim i as long
k=1
r=1
Do
If IsEmpty(Sheets("feuil" & k).Cells(r,1)) Then
Exit Do
End If
r=r+1
Loop
MsgBox "numèro de ligne de la 1ere cell vide " & r
For i=1 to r-1
MsgBox "contenu cells = " & Sheets("feuil" & k).Cells(i,1)
Next i
End Sub
------------------------------------------------------------------
A+
J'ai vu ton souci et j'ai créer ce petit module pour une seule feuille et ça marche.
Il ne reste qu'à l'adapter à ton cas.
J'ai consideré dans mon module une seule feuille (donc k=1)
sub a()
Dim k as long, r as long
Dim i as long
k=1 ' donc la 1ere feuille
r=1 'initialisation de la variable ( on commence de la 1ere ligne)
Do
If IsEmpty(Sheets("feuil" & k).Cells(r,1)) Then
'on cherche dans la 1ere colonne
Exit Do
End If
r=r+1
Loop
MsgBox "numèro de ligne de la 1ere cell vide " & r
'on commence à la 1er ligne jusqu'à la dernière cellule non vide
For i=1 to r-1
'affiche le contenu des cellules non vides
MsgBox "contenu cells = " & Sheets("feuil" & k).Cells(i,1)
Next i
End Sub
Les MsgBox ne sont que pour tester.
Tu adaptes après à ton exercice :
MessageAlarme.AddItem Sheets("feuil" & k).Cells(i,1)
Je vais écrire encore une fois le module sans commentaires
-------------------------------------------------------------------
sub a()
Dim k as long, r as long
Dim i as long
k=1
r=1
Do
If IsEmpty(Sheets("feuil" & k).Cells(r,1)) Then
Exit Do
End If
r=r+1
Loop
MsgBox "numèro de ligne de la 1ere cell vide " & r
For i=1 to r-1
MsgBox "contenu cells = " & Sheets("feuil" & k).Cells(i,1)
Next i
End Sub
------------------------------------------------------------------
A+