Problème dans une boucle

soffy

XLDnaute Nouveau
Bonjour,

Je me suis lancée à écrire une boucle et ça ne marche pas. Le déboggueur me dit Next sans For :eek:
Quelqu'un pourrait-il m'expliquer mon erreur ?


Public Sub RXlibre()
Dim c As String
For i = 3 To 23
With Sheets("PLANNING").Cells(5, i) 'recherche dans le feuille planning ligne 5 de 3 à 23
c = .Find(ComboBox1)
If Not c Then
MsgBox "c est libre"
Exit Sub
End If
Next
End Sub

Je suis pas sûr d'avoir correctement écrit pour que la valeur c sorte dans le message :cool:
Par avance merci
Sophie
 

wilfried_42

XLDnaute Barbatruc
Re : Problème dans une boucle

re:

Public Sub RXlibre()
Dim c As String
For i = 3 To 23
With Sheets("PLANNING").Cells(5, i) 'recherche dans le feuille planning ligne 5 de 3 à 23
c = .Find(ComboBox1)
If Not c Then
MsgBox "c est libre"
Exit Sub
End If
Next
End Sub

devient
Public Sub RXlibre()
For i = 3 To 23
if Sheets("PLANNING").Cells(5, i) <> combobox 1 then
MsgBox Sheets("PLANNING").Cells(5, i) & " est libre"
Exit for
End If
Next
End Sub

si j'ai bien compris ce que tu désires (je ne comprend pas le .find sur une seul cellule)

set C = sheets("PLANNING").range("C" & i & ":W" & i).find(combobox1)
if not c is nothing then

m'enfin je ne suis pas familier de find
 

soffy

XLDnaute Nouveau
Re : Problème dans une boucle

Bonjour Wilfried

Merci de ta réponse. Cette procédure fonctionne mais ne me renvoie pas les absents c'est à dire ceux qui sont nommés dans la combobox mais pas dans ma ligne 5 .:( .

Public Sub RXlibre()
For i = 3 To 23
If ComboBox1 <> Sheets("PLANNING").Cells(5, i) Then
MsgBox Sheets("PLANNING").Cells(5, i) & " est libre"
Exit For
End If
Next
End Sub

quand à
set C = sheets("PLANNING").range("C" & i & ":W" & i).find(combobox1)
if not c is nothing then

j'ai un message d'erreur sur c : incomptabilité de type. :(

Sophie
 

soffy

XLDnaute Nouveau
Re : Problème dans une boucle

Merci Wilfried de t'intéresser à mon cas . :D

Ci-joint le fichier zip.
En fait ce que je veux faire c'est avoir la liste des gens qui ne travaillent pas par journée c'est à dire dans chaque ligne.
D'abord et c'est le propos de cette demande je cherchais la procédure pour l'obtenir pour une ligne.
Ensuite je veux créer une boite de dialogue qui permettra à l'utilisateur de demander pour la ligne qui l'intéresse.
Voilà mon projet. :)

Sophie
 

Pièces jointes

  • Planning.zip
    20.2 KB · Affichages: 37
  • Planning.zip
    20.2 KB · Affichages: 34
  • Planning.zip
    20.2 KB · Affichages: 35

bqtr

XLDnaute Accro
Re : Problème dans une boucle

Bonsoir soffy, wilfried_42, bhbh

Vendredi, Bebere a répondu à une question assez similaire sur ce fil.
https://www.excel-downloads.com/threads/verification-manquant-sur-une-liste.76871/

J'ai honteusement repris son code et ajouté une InputBox pour choisir le N° de la ligne.
Les agents ne travaillant pas sont listés dans une msgbox.

Code:
Public Sub RXlibre()
Dim ListeRX As Variant, ListePLANNING As Range, ListeAbsent() As String
Dim j As Integer, i As Integer, k As Integer, Cel As Range, List
Dim lign
lign = Application.InputBox("Entrez un N° de ligne compris entre 5 et 39", "Choix de la ligne", Type:=1)
If lign = 0 Then Exit Sub
If lign < 5 Or lign > 39 Then
  MsgBox "Saisir un nombre entre 5 et 39.", vbCritical, "Attention:"
  Exit Sub
End If
With Sheets("RX")
  ListeRX = .Range("E6:E" & .Range("E65536").End(xlUp).Row)
End With
With Sheets("PLANNING")
  Set ListePLANNING = .Range("C" & lign & ":" & "W" & lign)
End With
For i = LBound(ListeRX) To UBound(ListeRX)
  Set Cel = ListePLANNING.Find(ListeRX(i, 1))
    If Cel Is Nothing Then
       ReDim Preserve ListeAbsent(j)
       ListeAbsent(j) = ListeRX(i, 1)
       j = j + 1
    End If
Next i
On Error GoTo fin
For k = LBound(ListeAbsent) To UBound(ListeAbsent)
 List = List & ListeAbsent(k) & vbCrLf
Next
MsgBox "Les agents suivants ne travaillent pas :" & vbCrLf & vbCrLf & List
Exit Sub
fin:
If Err = 9 Then MsgBox " Tout le monde travaille"
End Sub

Ca devrait correspondre à ce que tu souhaites.

Bonne nuit
 

Statistiques des forums

Discussions
312 379
Messages
2 087 762
Membres
103 661
dernier inscrit
fcleves