boucle sur +35

glm

XLDnaute Occasionnel
Bonsoir le forum,
je suis planté depuis cet après-midi sur une boucle...
j'ai mis un exemple
J'espère que j'ai été clair
Me redemander si nécessaire
:(
De l'aide me saurais bien venu
Merci
A+ [file name=exemple_20060211205255.zip size=24865]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/exemple_20060211205255.zip[/file]
 

Pièces jointes

  • exemple_20060211205255.zip
    24.3 KB · Affichages: 10
J

justine

Guest
bonsoir le forum, glm
bon si je comprends bien, tu veux la meme cellule active de la seconde feuille mais sur la premiere feuille et decalee de 35 cellules vers la droite.
alors:
dim lig as integer, col as integer
lig=sheets(feuil2).activecell.row
col=sheets(feuil2).activecell.column
sheets(feuil1).cells(lig,col).offset(0,35).value=textbox1 & 'h' & textbox2

ai je bien compris ton probleme?
 

Luki

XLDnaute Accro
Bonsoir Glm,

J'ai regardé ton fichier et je n'a pas tout compris, mais voici l'idée qui me vient:

Pourquoi ne pas nommer tes plages dans la feuil1?
Puisque tu sais comparer le numéro de semaine, tu peux l'utiliser pour faire référence à une plage nommée en feuil1 et travailler uniquement sur cette zone.

Par exemple tu peux nommer tes plages Sem01,Sem02, etc...

Ensuite tu peux trouver la plage ou copier tes données:
NumCol= ton num de semaine par un moyen quelconque
Mystring= 'Sem' & NumCol
Set MyRange=range(Mystring)

Et là tu peux travailler sur ta plage qu'elle qu'elle que soit ta semaine.

N'hésites pas si tu as besoin.
:)
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir glm, Justine et Luki, bonsoir à toutes et à tous :)

Je te propose une solution sans boucle mais uniquement avec des calculs d'indices : à toi de voir ;)

[file name=glm_Boucle.zip size=25333]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/glm_Boucle.zip[/file]

EDITION : Tu supprimeras la première ligne de code de Private Sub valid_Click() car c'est une instruction que j'utilise pour vérifier le fonctionnement des procédures (Stop).

A+ ;)

Message édité par: Charly2, à: 12/02/2006 20:05
 

Pièces jointes

  • glm_Boucle.zip
    24.7 KB · Affichages: 18

Charly2

Nous a quittés en 2006
Repose en paix
re à tout le monde :)

glm, explication de texte et rectification :

Private Sub valid_Click()
'
Dim LigneSource&, ColSource%
Dim LigneDest&, ColDest%
Dim Semaine As Byte
Dim Couleur As Variant
'
  ' Vérifications préliminaires sur la saisie
  If TextBox1 = '' Then
    MsgBox 'SAISIE DES HEURES NON CONFORME. Veuillez saisir un nombre d'heures !'
    TextBox1.SetFocus
    Exit Sub
  End If

  V1 = Val(TextBox1)
  V2 = Val(TextBox2)

  If V2 > 60 Then
    MsgBox 'SAISIE DES MINUTES NON CONFORME. Veuillez saisir un nombre de minutes inférieur ou égale à 60 !'
    TextBox2 = ''
    TextBox2.SetFocus
    Exit Sub
  End If

  ' CONVERSION Minutes en Centièmes
  Min = (V2 * 100) / 60 ' convertit en minutes le total des saisies

  ' Initialisation des variables
  LigneSource = ActiveCell.Row 'ligne active
  ColSource = ActiveCell.Column

  ' Le n° de semaine est en ligne 6...
  Semaine = Cells(6, ColSource)

  ' Allez, on fait dans le compliqué ;-)))
  ' Puisque tu vas de juin à mai, il y aura des semaines à vérifier
  ' notamment les semaines inférieures ou égales à 22 :
  ' Si supérieures, pas de soucis, on est dans l'année de départ
  ' Sinon, il faut ajouter 29 à la semaine. Ainsi on a, si la semaine = 22
  ' et l'année = celle en cours : LigneDest = 0 + LigneSource
  ' Sinon, on a LigneDest = 29 + 22 (51)* 35 + LigneSource...
  LigneDest = (IIf(Semaine <= 22, IIf(Year(Cells(8, ColSource)) _
      - AnneeDebut = 1, 29, -22), -22) + Semaine) * 35 + LigneSource


  ColDest = (WeekDay(Cells(8, ColSource)) - 1) * 2 + 3

  Couleur = ActiveCell.Font.ColorIndex

  With Sheets('Feuil1')
    .Cells(LigneDest, ColDest).Font.ColorIndex = Couleur
    .Cells(LigneDest, ColDest).Value = ActiveCell
    .Cells(LigneDest, ColDest + 1).Font.ColorIndex = Couleur
    .Cells(LigneDest, ColDest + 1).Value = Format((TextBox1), '00') & ',' & Format((Min), '00')
  End With

  TextBox1.Value = ''
  TextBox2.Value = ''

  Unload Me

End Sub

En gras, les modifs du code et les explications. je joins le fichier corrigé... A vouloir tester le cas où semaine est entre 1 et 22, j'en ai oublié l'essentiel, mais c'est réparé !!!

En espérant que tu n'aies pas trop mal au crâne après ça ;)

[file name=glm_Boucle_20060212234206.zip size=25487]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/glm_Boucle_20060212234206.zip[/file]

A+
 

Pièces jointes

  • glm_Boucle_20060212234206.zip
    24.9 KB · Affichages: 8

Discussions similaires

Réponses
10
Affichages
10 K