Peut on utiliser deux "for each" simultanément?

kaiser

XLDnaute Occasionnel
Bonjour le forum

Voila j'ai un fichier de base, qui grace a un CommandButton va remplir un fichier annexe vierge en fonction de certains critéres puis finira en enregisrant ce fichier sous un autre nom.
J'ai réalisé le code en commencant par faire faire ce que je voulais au programme pour la premiére personne de la liste, pour cette personne ca marche sans souci, mais maitenant je voudrais que avec ce même bouton il me fasse la même chose pour toute les personnes.
Seulement il ne veut pas et me dis "For crontrol variable already in use" (la variable de controle "for" est deja utilisé).

Je me demande donc si il est possible d'utiliser deux commandes "for" en même temps ou sil existe une autre technique pour que je parvienne à mes fins.

Une petite image pour illustrer tout ca:
http://img172.imageshack.us/my.php?image=tempbi6.jpg

et voici mon programme (version qui fonctionne pour une personne)
Code:
Private Sub CommandButton1_Click()
Dim Cell As Range
Dim remplace As String, poste As String, explication As String, mois As String
Dim nom As String, prenom As String
Dim heure As Integer, jour As Integer


Workbooks.Open "c:\Documents And Settings\diaquint\My Documents\rpl.xls"
ActiveWindow.WindowState = xlMinimized
Workbooks("2007Schicht2modif1.xls").Activate
ActiveWindow.WindowState = xlMaximized

Set plage_date = Range("D9:AG9")
i=5
    For Each Cell In plage_date
    If Cell.Interior.ColorIndex = 6 Or Cell.Interior.ColorIndex = 7 Then
 i=i+1
    nom = Range("B9")
    prenom = Range("B10")
    Workbooks("rpl").Worksheets("sheet1").Range("C3") = prenom & " " & nom
    Workbooks("rpl").Worksheets("sheet1").Range("C3").Borders.LineStyle = xLineStyleNone
    heure = Cell.Value
    jour = Cells(6, Cell.column)
     
         Select Case ActiveSheet.Name
         blablabla
         End Select
         
    Workbooks("rpl").Worksheets("sheet1").Range("E1") = mois
    With Workbooks("rpl").Worksheets("sheet1").Range("E1").Font
    .Bold = False
    .Italic = False
    .Underline = False
    End With
    Workbooks("rpl").Worksheets("sheet1").Cells(i, 1) = heure
    Workbooks("rpl").Worksheets("sheet1").Cells(i, 2) = jour & " " & mois

    remplace = InputBox("Entrez le nom de la personne remplacée le " & jour & " " & mois & " par " & prenom & " " & nom, "Remplacement")
    Workbooks("rpl").Worksheets("sheet1").Cells(i, 3) = remplace
    poste = InputBox("Entrez le poste", "Remplacement")
    Workbooks("rpl").Worksheets("sheet1").Cells(i, 4) = poste
    explication = InputBox("Entrez les explications du remplacement", "Remplacement")
    Workbooks("rpl").Worksheets("sheet1").Cells(i, 5) = explication
    End If
Next

Workbooks("rpl").Activate
Workbooks("rpl").SaveAs Filename:="remplacement " & mois & " " & nom
  

End Sub
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Peut on utiliser deux "for each" simultanément?

bonjour a tous

en partant de bases sures (Wiki)
1 twip= 1/1440 in
1 in=2,54 cm

on aboutit a
nombre de twip/pixel=1440/resolution ecran (exprimée en pixels/pouce ou pixels/inch)

soit 20 twips par pixel pour un 72 ppp
et 15 twips par pixel pour un 96 ppp
(ce qui explique le 15 que j'avais donné anterieurement)
 

kaiser

XLDnaute Occasionnel
Re : Peut on utiliser deux "for each" simultanément?

Pour moi les PPP varie selon les écran car si les résolution sont relativement peu nombreuse (1024/768,1280/1024,1600/1200 pour les principales) alors que la taille des écrans est très variable.

Edit: j'avais pas vu le post de PierreJean au dessus, bien joué la c'est plus clair!

J'ai encore une question, à la fin de mon programme présent plus haut, je souhaiterais donner la possibilité à l'utilisateur d'imprimer les classeurs qui ont été créer par la macro, pour le vbYesNo pas de souci, seulement je ne sais pas quoi mettre aprés le "then" dans le cas ou l'utilisateur dis oui.
il faudrais par exemple lui dire d'imprimer les documents avec comme nom "remplacement" suivi du mois en cours (valeur de la varaible mois = mai pour ce mois)
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Peut on utiliser deux "for each" simultanément?

bonjour kaiser

un truc dans ce cas:

Outils > macro > nouvelle macro

puis tu fait les impressions que tu souhaites

et a la fin

Outils > Macro > Arreter l'enregistrement

et la macro t'attends gentiment dans le module

il ne te restera plus apres le Oui a ecrire

Call macrox et le tour est joué
 

kaiser

XLDnaute Occasionnel
Re : Peut on utiliser deux "for each" simultanément?

Bonjour le forum

La solution que tu me propose me pose deux problémes PierreJean: les feuilles a imprimer a la fin de chaque mois ne seront jamais les même, du fait deja du mois qui change et aussi les employés faisant des remplacements ne sont jamais les même.
En plus de ca je n'ai pas d'imprimante sur mon poste.

Sinon je voudrais savoir si il y moyen pour continuer a pouvoir naviguer dans excel pendant l'execution de la macro (au moins pouvoir scroller) et si il est possible d'afficher/désafficher tout les commentaires placé dans la page (également durant l'execution de la macro)

Merci
 

kaiser

XLDnaute Occasionnel
Re : Peut on utiliser deux "for each" simultanément?

en fait plutot que d'afficher/masquer tous les commentaires, je voudrais uniquement afficher le commentaire lorsque le programme detecte une cellule jaune ou rose.
J'ai trouvé le code, mais je ne sais pas comment le mettre.

Code:
For Each Cell In plage_date
    If Cell.Interior.ColorIndex = 6 Or Cell.Interior.ColorIndex = 38 Then
    flag = True
    Cell.Comment.Visible = True

si je le met comme ca il me dis:
Error runtime "91"
Object variable or with bloc variable not set

je pense que ce doit être un truc tout con mais vu que je suis débutant je vois pas c'est quoi
 

Discussions similaires

Réponses
7
Affichages
434

Statistiques des forums

Discussions
312 302
Messages
2 087 035
Membres
103 436
dernier inscrit
PascalH