Problèmes de boucle For next

Résolu
fitzjames Messages postés 55 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 27 février 2009 - 20 juil. 2005 à 12:00
fitzjames Messages postés 55 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 27 février 2009 - 22 juil. 2005 à 13:19
Bonjour,

Je suis sur excel 2003, et j'ai un problème sur mes boucle for ...next. Ma macro doit mettre à jour à partir d'une liste mes feuilles si le numéro dans la liste ne correspond pas elle crée une nouvelle feuille et fait les mises à jour.
Le problème est qu'elle trouve la feuille, la met à jour et en créé une nouvelle.

Mes feuilles de calcul sont triés en fonction de leurs position dans la liste.

Private Sub CommandButton3_Click()


Dim name As String
Dim Found As Integer



For i = Find_LC("Titres") + 1 To TotalChantier() + 6
Worksheets("Liste des Chantiers").Activate
name = Worksheets("Liste des Chantiers").Range(Find_LC("ColNumero") & i)

Found = 0
For j = 5 To Sheets.Count
If Worksheets(j).name = name Then
Found = 1
sheetname = ActiveSheet.name
Mise2
Worksheets(sheetname).Activate
If Found = 1 Then
Exit For
End If
Else
If Found = 0 Then
'MsgBox ("test")
new_sheet
Mise3
Found = 1
If Found = 1 Then
Exit For
End If
End If
End If
Next j
Next i

End Sub

Merci d'avance
[?] Estelle[8D]

5 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
20 juil. 2005 à 15:38
Salut,

Essaie ça :


Dim name As String
Dim Found As Integer

For i = Find_LC("Titres") + 1 To TotalChantier() + 6
Worksheets("Liste des Chantiers").Activate
name = Worksheets("Liste des Chantiers").Range(Find_LC("ColNumero") & i)

Found = 0
For j = 5 To Sheets.Count
If Worksheets(j).name = name Then
Found = 1
sheetname = ActiveSheet.name
Mise2
Worksheets(sheetname).Activate
End If
Next j

If Found = 0 Then
'MsgBox ("test")
new_sheet
Mise3
End If
Next i

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
3
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
20 juil. 2005 à 15:42
J'ai oublié un exit for après Worksheets(sheetname).Activate, en effet, une fois trouvé, ce n'est plus la peine de continuer la boucle.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
3
fitzjames Messages postés 55 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 27 février 2009 1
22 juil. 2005 à 13:19
Bonjour,

c pas moi qui est fait c macros je les ai récuperées dans un autre fichier :
*******************************************************************
Function Find_LC(name As String)
' Permet de récupérer la colonne d'un titre de colonne passé en paramètre (déclaré dans la feuille de paramètres).
' Exemple : Find_LC("Domaine") renvoie B => la colonne B s'intitule "Domaine"
' Permet de récupérer la ligne des titres dans l'onglet "Liste des chantiers"
' Exemple : Find_LC("Titres") renvoie 6 => la ligne 6 contient les titres des colonnes


Dim chemin As String
Dim cellule As String
Dim feuille As String


'Recupere la valeur d'un nom prédéfini
chemin = Mid(ActiveWorkbook.Names(name).Value, 2)
feuille = Left(chemin, InStr(chemin, "!") - 1)
cellule = Mid(chemin, InStr(chemin, "!") + 1)
Find_LC = Worksheets(feuille).Range(cellule).Value
End Function
********************************************************************
Function TotalChantier()
' Permet de connaitre le nombre total de chantiers


Dim j As Integer

j = 0
For i = 1 To Sheets.Count
If Worksheets(i).Cells(3, 2).Value = "Architecte :" And Worksheets(i).name <> "Modèle" Then
j = j + 1
End If
Next i
TotalChantier = j

End Function
*********************************************************************
Ceux sont des paramètres qui se trouve dans une feuille de calcul
"Titres" = 7
"ColNumero"= E qui Correspond à la position de colonne dans la liste

J'espère que c plus explicite
Merci encore
[?] Estelle[8D]
3
fitzjames Messages postés 55 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 27 février 2009 1
21 juil. 2005 à 12:54
Bonjour,

Merci pour la mise à jour de mes Feuilles la macro marche inpec il ne me créé plus de nouvelle feuille mais si je créé une ligne dans ma liste il ne me créer pas de nouvelle feuille. il ne passe pas dans la boucle :

If Found = 0 Then
'MsgBox ("test")
new_sheet
Mise3
End If

merci d'avance
[?] Estelle[8D]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
21 juil. 2005 à 15:01
Si ça ne passe pas dans cette boucle, c'est que les feuilles existent déjà ou qu'il y a un problème au niveau de :

For i = Find_LC("Titres") + 1 To TotalChantier() + 6
Worksheets("Liste des Chantiers").Activate
name = Worksheets("Liste des Chantiers").Range(Find_LC("ColNumero") & i)

comme je ne sais pas ce que renvoient Find_LC("Titres"), TotalChantier() et Find_LC("ColNumero"), je ne peux pas te dire.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Rejoignez-nous