Problèmes de boucle For next [Résolu]

fitzjames 55 Messages postés mardi 8 juin 2004Date d'inscription 27 février 2009 Dernière intervention - 20 juil. 2005 à 12:00 - Dernière réponse : fitzjames 55 Messages postés mardi 8 juin 2004Date d'inscription 27 février 2009 Dernière intervention
- 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]
Afficher la suite 

5 réponses

Meilleure réponse
cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention - 20 juil. 2005 à 15:38
3
Merci
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 !?

Merci cs_CanisLupus 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 76 internautes ce mois-ci

Meilleure réponse
cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention - 20 juil. 2005 à 15:42
3
Merci
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 !?

Merci cs_CanisLupus 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 76 internautes ce mois-ci

Meilleure réponse
fitzjames 55 Messages postés mardi 8 juin 2004Date d'inscription 27 février 2009 Dernière intervention - 22 juil. 2005 à 13:19
3
Merci
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]

Merci fitzjames 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 76 internautes ce mois-ci

fitzjames 55 Messages postés mardi 8 juin 2004Date d'inscription 27 février 2009 Dernière intervention - 21 juil. 2005 à 12:54
0
Merci
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]
cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention - 21 juil. 2005 à 15:01
0
Merci
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 !?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.