Bonjour
Je me suis payé une bible VBA et j'étudie les week-end
Bonjour
Je me suis payé une bible VBA et j'étudie les week-end
Bonjour
Je me suis payé une bible VBA et j'étudie les week-end
Salut rex
c'est quoi ta "bible" vba stp ?
merci
RT a tenté de faire fumer son clavier pour :Bonjour
Je me suis payé une bible VBA et j'étudie les week-end
--
Amicalement
Michel . P
(un jour, serai Calife à la place du Calife...)
Salut rex
c'est quoi ta "bible" vba stp ?
merci
RT a tenté de faire fumer son clavier pour :
Bonjour
Je me suis payé une bible VBA et j'étudie les week-end
--
Amicalement
Michel . P
(un jour, serai Calife à la place du Calife...)
Salut rex
c'est quoi ta "bible" vba stp ?
merci
RT a tenté de faire fumer son clavier pour :Bonjour
Je me suis payé une bible VBA et j'étudie les week-end
--
Amicalement
Michel . P
(un jour, serai Calife à la place du Calife...)
Bonjour
Je commence à utiliser les macro VBA de plus en plus
Le gros problème est que cela devient vite une drogue et que l'on en veux
de
plus en plus
Je me suis payé une bible VBA et j'étudie les week-end
Mais aujourd'hui y a un truc que je voudrais au moins mettre en route
rapidement
Sur une feuille j'introduis les heures de début (colonne A) et de fin
(colonne C) grace à des boutons/macro et en fin (colonne D) j'ai le temps
passé
Dans la colonne B j'incris le nom du projet
Ce que je voudrais faire c'est une macro(accroché à un bouton) qui:
Verifie le nom du projet en B sur toutes les lignes non marqué en
colonne E
Récupère le temps en D sur la même ligne
Ajoute ce temps dans le première cellule vide d'une colonne d'une
seconde feuille (Total Time)
Mais dans la colonne dont le titre est le même que le nom en B
Et chaque fois marque d'un X en colonne E pour dire que cette ligne
est
comptalisé
Après y encore des trucs à faire, mais je crois que je me débrouillerai
Une réponse rapide serait TRES appréciée
Merci à tous
Rex
Bonjour
Je commence à utiliser les macro VBA de plus en plus
Le gros problème est que cela devient vite une drogue et que l'on en veux
de
plus en plus
Je me suis payé une bible VBA et j'étudie les week-end
Mais aujourd'hui y a un truc que je voudrais au moins mettre en route
rapidement
Sur une feuille j'introduis les heures de début (colonne A) et de fin
(colonne C) grace à des boutons/macro et en fin (colonne D) j'ai le temps
passé
Dans la colonne B j'incris le nom du projet
Ce que je voudrais faire c'est une macro(accroché à un bouton) qui:
Verifie le nom du projet en B sur toutes les lignes non marqué en
colonne E
Récupère le temps en D sur la même ligne
Ajoute ce temps dans le première cellule vide d'une colonne d'une
seconde feuille (Total Time)
Mais dans la colonne dont le titre est le même que le nom en B
Et chaque fois marque d'un X en colonne E pour dire que cette ligne
est
comptalisé
Après y encore des trucs à faire, mais je crois que je me débrouillerai
Une réponse rapide serait TRES appréciée
Merci à tous
Rex
Bonjour
Je commence à utiliser les macro VBA de plus en plus
Le gros problème est que cela devient vite une drogue et que l'on en veux
de
plus en plus
Je me suis payé une bible VBA et j'étudie les week-end
Mais aujourd'hui y a un truc que je voudrais au moins mettre en route
rapidement
Sur une feuille j'introduis les heures de début (colonne A) et de fin
(colonne C) grace à des boutons/macro et en fin (colonne D) j'ai le temps
passé
Dans la colonne B j'incris le nom du projet
Ce que je voudrais faire c'est une macro(accroché à un bouton) qui:
Verifie le nom du projet en B sur toutes les lignes non marqué en
colonne E
Récupère le temps en D sur la même ligne
Ajoute ce temps dans le première cellule vide d'une colonne d'une
seconde feuille (Total Time)
Mais dans la colonne dont le titre est le même que le nom en B
Et chaque fois marque d'un X en colonne E pour dire que cette ligne
est
comptalisé
Après y encore des trucs à faire, mais je crois que je me débrouillerai
Une réponse rapide serait TRES appréciée
Merci à tous
Rex
Salut Rex,
Il y a quelques points que je n'ai pas très bien compris comme : "Et
chaque
fois marque d'un X en colonne E pour dire que cette ligne est comptalisé"
car si le temps est inscit dans la ligne cela ne veux t'il pas dire qu'il
a
été ajouté ? ou alors, il faut que le temps soit totalisé et non inscrit
dans la 1ère cellule vide de la colonne correspondante. Fait déjà un test
sur une copie de ton classeur et tiens moi au courant :
Sub AjouteTemps()
Dim FeTotal As Worksheet
Dim FeTemps As Worksheet
Dim Plage As Range
Dim PlgTitres As Range
Dim Cel1 As Range
Dim Cel2 As Range
'feuille où sont récupérées
'les valeurs, à adapter !!!
Set FeTemps = Worksheets("Feuil1")
'exécute la proc par
'rapport à la colonne B
With FeTemps
Set Plage = .Range(.[B2], _
.[B65536].End(xlUp))
End With
Set FeTotal = Worksheets("Total Time")
'ligne d'entetes de colonnes
'contenant les noms de projets
With FeTotal
Set PlgTitres = .Range(.[A1], _
.[IV1].End(xlToLeft))
End With
'balaye la plage et recupère les valeurs
'si dans la colonne E la cellule est vide
'puis recherche dans les titres le nom du
'projet correspondant afin de coller la
'valeur dans la 1ère cellule vide
For Each Cel1 In Plage
If Cel1.Offset(0, 3) = "" Then
Set Cel2 = PlgTitres.Find(Cel1.Value, _
, xlValues)
If Not Cel2 Is Nothing Then
FeTotal.Cells(65536, Cel2.Column) _
.End(xlUp).Offset(1, 0) = Cel1.Offset(0, 2)
End If
End If
Next Cel1
Set Cel1 = Nothing
Set Cel2 = Nothing
Set Plage = Nothing
Set PlgTitres = Nothing
Set FeTemps = Nothing
Set FeTotal = Nothing
End Sub
Hervé.
"RT" a écrit dans le message news:
zDJQc.205136$Bonjour
Je commence à utiliser les macro VBA de plus en plus
Le gros problème est que cela devient vite une drogue et que l'on en
veux
deplus en plus
Je me suis payé une bible VBA et j'étudie les week-end
Mais aujourd'hui y a un truc que je voudrais au moins mettre en route
rapidement
Sur une feuille j'introduis les heures de début (colonne A) et de fin
(colonne C) grace à des boutons/macro et en fin (colonne D) j'ai le
temps
passé
Dans la colonne B j'incris le nom du projet
Ce que je voudrais faire c'est une macro(accroché à un bouton) qui:
Verifie le nom du projet en B sur toutes les lignes non marqué en
colonne E
Récupère le temps en D sur la même ligne
Ajoute ce temps dans le première cellule vide d'une colonne d'une
seconde feuille (Total Time)
Mais dans la colonne dont le titre est le même que le nom en B
Et chaque fois marque d'un X en colonne E pour dire que cette ligne
estcomptalisé
Après y encore des trucs à faire, mais je crois que je me débrouillerai
Une réponse rapide serait TRES appréciée
Merci à tous
Rex
Salut Rex,
Il y a quelques points que je n'ai pas très bien compris comme : "Et
chaque
fois marque d'un X en colonne E pour dire que cette ligne est comptalisé"
car si le temps est inscit dans la ligne cela ne veux t'il pas dire qu'il
a
été ajouté ? ou alors, il faut que le temps soit totalisé et non inscrit
dans la 1ère cellule vide de la colonne correspondante. Fait déjà un test
sur une copie de ton classeur et tiens moi au courant :
Sub AjouteTemps()
Dim FeTotal As Worksheet
Dim FeTemps As Worksheet
Dim Plage As Range
Dim PlgTitres As Range
Dim Cel1 As Range
Dim Cel2 As Range
'feuille où sont récupérées
'les valeurs, à adapter !!!
Set FeTemps = Worksheets("Feuil1")
'exécute la proc par
'rapport à la colonne B
With FeTemps
Set Plage = .Range(.[B2], _
.[B65536].End(xlUp))
End With
Set FeTotal = Worksheets("Total Time")
'ligne d'entetes de colonnes
'contenant les noms de projets
With FeTotal
Set PlgTitres = .Range(.[A1], _
.[IV1].End(xlToLeft))
End With
'balaye la plage et recupère les valeurs
'si dans la colonne E la cellule est vide
'puis recherche dans les titres le nom du
'projet correspondant afin de coller la
'valeur dans la 1ère cellule vide
For Each Cel1 In Plage
If Cel1.Offset(0, 3) = "" Then
Set Cel2 = PlgTitres.Find(Cel1.Value, _
, xlValues)
If Not Cel2 Is Nothing Then
FeTotal.Cells(65536, Cel2.Column) _
.End(xlUp).Offset(1, 0) = Cel1.Offset(0, 2)
End If
End If
Next Cel1
Set Cel1 = Nothing
Set Cel2 = Nothing
Set Plage = Nothing
Set PlgTitres = Nothing
Set FeTemps = Nothing
Set FeTotal = Nothing
End Sub
Hervé.
"RT" <rthsopmapmson@softscreen.be> a écrit dans le message news:
zDJQc.205136$P84.10350646@phobos.telenet-ops.be...
Bonjour
Je commence à utiliser les macro VBA de plus en plus
Le gros problème est que cela devient vite une drogue et que l'on en
veux
de
plus en plus
Je me suis payé une bible VBA et j'étudie les week-end
Mais aujourd'hui y a un truc que je voudrais au moins mettre en route
rapidement
Sur une feuille j'introduis les heures de début (colonne A) et de fin
(colonne C) grace à des boutons/macro et en fin (colonne D) j'ai le
temps
passé
Dans la colonne B j'incris le nom du projet
Ce que je voudrais faire c'est une macro(accroché à un bouton) qui:
Verifie le nom du projet en B sur toutes les lignes non marqué en
colonne E
Récupère le temps en D sur la même ligne
Ajoute ce temps dans le première cellule vide d'une colonne d'une
seconde feuille (Total Time)
Mais dans la colonne dont le titre est le même que le nom en B
Et chaque fois marque d'un X en colonne E pour dire que cette ligne
est
comptalisé
Après y encore des trucs à faire, mais je crois que je me débrouillerai
Une réponse rapide serait TRES appréciée
Merci à tous
Rex
Salut Rex,
Il y a quelques points que je n'ai pas très bien compris comme : "Et
chaque
fois marque d'un X en colonne E pour dire que cette ligne est comptalisé"
car si le temps est inscit dans la ligne cela ne veux t'il pas dire qu'il
a
été ajouté ? ou alors, il faut que le temps soit totalisé et non inscrit
dans la 1ère cellule vide de la colonne correspondante. Fait déjà un test
sur une copie de ton classeur et tiens moi au courant :
Sub AjouteTemps()
Dim FeTotal As Worksheet
Dim FeTemps As Worksheet
Dim Plage As Range
Dim PlgTitres As Range
Dim Cel1 As Range
Dim Cel2 As Range
'feuille où sont récupérées
'les valeurs, à adapter !!!
Set FeTemps = Worksheets("Feuil1")
'exécute la proc par
'rapport à la colonne B
With FeTemps
Set Plage = .Range(.[B2], _
.[B65536].End(xlUp))
End With
Set FeTotal = Worksheets("Total Time")
'ligne d'entetes de colonnes
'contenant les noms de projets
With FeTotal
Set PlgTitres = .Range(.[A1], _
.[IV1].End(xlToLeft))
End With
'balaye la plage et recupère les valeurs
'si dans la colonne E la cellule est vide
'puis recherche dans les titres le nom du
'projet correspondant afin de coller la
'valeur dans la 1ère cellule vide
For Each Cel1 In Plage
If Cel1.Offset(0, 3) = "" Then
Set Cel2 = PlgTitres.Find(Cel1.Value, _
, xlValues)
If Not Cel2 Is Nothing Then
FeTotal.Cells(65536, Cel2.Column) _
.End(xlUp).Offset(1, 0) = Cel1.Offset(0, 2)
End If
End If
Next Cel1
Set Cel1 = Nothing
Set Cel2 = Nothing
Set Plage = Nothing
Set PlgTitres = Nothing
Set FeTemps = Nothing
Set FeTotal = Nothing
End Sub
Hervé.
"RT" a écrit dans le message news:
zDJQc.205136$Bonjour
Je commence à utiliser les macro VBA de plus en plus
Le gros problème est que cela devient vite une drogue et que l'on en
veux
deplus en plus
Je me suis payé une bible VBA et j'étudie les week-end
Mais aujourd'hui y a un truc que je voudrais au moins mettre en route
rapidement
Sur une feuille j'introduis les heures de début (colonne A) et de fin
(colonne C) grace à des boutons/macro et en fin (colonne D) j'ai le
temps
passé
Dans la colonne B j'incris le nom du projet
Ce que je voudrais faire c'est une macro(accroché à un bouton) qui:
Verifie le nom du projet en B sur toutes les lignes non marqué en
colonne E
Récupère le temps en D sur la même ligne
Ajoute ce temps dans le première cellule vide d'une colonne d'une
seconde feuille (Total Time)
Mais dans la colonne dont le titre est le même que le nom en B
Et chaque fois marque d'un X en colonne E pour dire que cette ligne
estcomptalisé
Après y encore des trucs à faire, mais je crois que je me débrouillerai
Une réponse rapide serait TRES appréciée
Merci à tous
Rex
Salut Hervé
Merci pour la réponse
L'idée de mettre une X dans une cellule adjacente est simplement pour que
cette ligne soit considérée comme comptabilisée
Je vais essayer d'être claire, mais souvient toi que je suis British.
Cette macro serait lancée en fin de journée pour comptabiliser les heures
passées sur différents projets
Mais si le lendemain je la relance il ne faut pas qu'elle recomptabilise
les
lignes comptabilisés la veille
Et il n'est pas question de les supprimer après les avoir comptabilisées
car
elle doivent encore servir à d'autre calculs
La croix sert uniquement de temoin pour dire que ces lignes ne doivent
plus
être traitées
Maintenant si tu as une autre idée, par exemple, en fin de macro les
déplacer sur une autre feuille, c'est tout aussi bon
Le principal est qu'elle ne soit traitées qu'une seule fois
Est-ce que tu comprends mieux maintenant?
Je sais que ce n'est pas toujours évident d'expliquer à quelqu'un ce qui
simple pour soit
C'est parce que chacun à sa logique personnelle et elle est souvent (dans
mon cas) incompréhensible pour les autres
Merci et à plus tard
PS Je suis encore au boulot pour une heure, si j'ai le courage je
continuerai demain sinon on se tape (du clavier) lundi
Bon week end
Rex
"Hervé" wrote in message
news:Salut Rex,
Il y a quelques points que je n'ai pas très bien compris comme : "Et
chaquefois marque d'un X en colonne E pour dire que cette ligne est
comptalisé"
car si le temps est inscit dans la ligne cela ne veux t'il pas dire
qu'il
aété ajouté ? ou alors, il faut que le temps soit totalisé et non inscrit
dans la 1ère cellule vide de la colonne correspondante. Fait déjà un
test
sur une copie de ton classeur et tiens moi au courant :
Sub AjouteTemps()
Dim FeTotal As Worksheet
Dim FeTemps As Worksheet
Dim Plage As Range
Dim PlgTitres As Range
Dim Cel1 As Range
Dim Cel2 As Range
'feuille où sont récupérées
'les valeurs, à adapter !!!
Set FeTemps = Worksheets("Feuil1")
'exécute la proc par
'rapport à la colonne B
With FeTemps
Set Plage = .Range(.[B2], _
.[B65536].End(xlUp))
End With
Set FeTotal = Worksheets("Total Time")
'ligne d'entetes de colonnes
'contenant les noms de projets
With FeTotal
Set PlgTitres = .Range(.[A1], _
.[IV1].End(xlToLeft))
End With
'balaye la plage et recupère les valeurs
'si dans la colonne E la cellule est vide
'puis recherche dans les titres le nom du
'projet correspondant afin de coller la
'valeur dans la 1ère cellule vide
For Each Cel1 In Plage
If Cel1.Offset(0, 3) = "" Then
Set Cel2 = PlgTitres.Find(Cel1.Value, _
, xlValues)
If Not Cel2 Is Nothing Then
FeTotal.Cells(65536, Cel2.Column) _
.End(xlUp).Offset(1, 0) = Cel1.Offset(0, 2)
End If
End If
Next Cel1
Set Cel1 = Nothing
Set Cel2 = Nothing
Set Plage = Nothing
Set PlgTitres = Nothing
Set FeTemps = Nothing
Set FeTotal = Nothing
End Sub
Hervé.
"RT" a écrit dans le message news:
zDJQc.205136$Bonjour
Je commence à utiliser les macro VBA de plus en plus
Le gros problème est que cela devient vite une drogue et que l'on en
veuxdeplus en plus
Je me suis payé une bible VBA et j'étudie les week-end
Mais aujourd'hui y a un truc que je voudrais au moins mettre en route
rapidement
Sur une feuille j'introduis les heures de début (colonne A) et de fin
(colonne C) grace à des boutons/macro et en fin (colonne D) j'ai le
tempspassé
Dans la colonne B j'incris le nom du projet
Ce que je voudrais faire c'est une macro(accroché à un bouton) qui:
Verifie le nom du projet en B sur toutes les lignes non marqué en
colonne E
Récupère le temps en D sur la même ligne
Ajoute ce temps dans le première cellule vide d'une colonne d'une
seconde feuille (Total Time)
Mais dans la colonne dont le titre est le même que le nom en B
Et chaque fois marque d'un X en colonne E pour dire que cette
ligne
estcomptalisé
Après y encore des trucs à faire, mais je crois que je me
débrouillerai
Une réponse rapide serait TRES appréciée
Merci à tous
Rex
Salut Hervé
Merci pour la réponse
L'idée de mettre une X dans une cellule adjacente est simplement pour que
cette ligne soit considérée comme comptabilisée
Je vais essayer d'être claire, mais souvient toi que je suis British.
Cette macro serait lancée en fin de journée pour comptabiliser les heures
passées sur différents projets
Mais si le lendemain je la relance il ne faut pas qu'elle recomptabilise
les
lignes comptabilisés la veille
Et il n'est pas question de les supprimer après les avoir comptabilisées
car
elle doivent encore servir à d'autre calculs
La croix sert uniquement de temoin pour dire que ces lignes ne doivent
plus
être traitées
Maintenant si tu as une autre idée, par exemple, en fin de macro les
déplacer sur une autre feuille, c'est tout aussi bon
Le principal est qu'elle ne soit traitées qu'une seule fois
Est-ce que tu comprends mieux maintenant?
Je sais que ce n'est pas toujours évident d'expliquer à quelqu'un ce qui
simple pour soit
C'est parce que chacun à sa logique personnelle et elle est souvent (dans
mon cas) incompréhensible pour les autres
Merci et à plus tard
PS Je suis encore au boulot pour une heure, si j'ai le courage je
continuerai demain sinon on se tape (du clavier) lundi
Bon week end
Rex
"Hervé" <hmsilve@wanadoo.fr> wrote in message
news:uBIyDr7eEHA.3612@TK2MSFTNGP12.phx.gbl...
Salut Rex,
Il y a quelques points que je n'ai pas très bien compris comme : "Et
chaque
fois marque d'un X en colonne E pour dire que cette ligne est
comptalisé"
car si le temps est inscit dans la ligne cela ne veux t'il pas dire
qu'il
a
été ajouté ? ou alors, il faut que le temps soit totalisé et non inscrit
dans la 1ère cellule vide de la colonne correspondante. Fait déjà un
test
sur une copie de ton classeur et tiens moi au courant :
Sub AjouteTemps()
Dim FeTotal As Worksheet
Dim FeTemps As Worksheet
Dim Plage As Range
Dim PlgTitres As Range
Dim Cel1 As Range
Dim Cel2 As Range
'feuille où sont récupérées
'les valeurs, à adapter !!!
Set FeTemps = Worksheets("Feuil1")
'exécute la proc par
'rapport à la colonne B
With FeTemps
Set Plage = .Range(.[B2], _
.[B65536].End(xlUp))
End With
Set FeTotal = Worksheets("Total Time")
'ligne d'entetes de colonnes
'contenant les noms de projets
With FeTotal
Set PlgTitres = .Range(.[A1], _
.[IV1].End(xlToLeft))
End With
'balaye la plage et recupère les valeurs
'si dans la colonne E la cellule est vide
'puis recherche dans les titres le nom du
'projet correspondant afin de coller la
'valeur dans la 1ère cellule vide
For Each Cel1 In Plage
If Cel1.Offset(0, 3) = "" Then
Set Cel2 = PlgTitres.Find(Cel1.Value, _
, xlValues)
If Not Cel2 Is Nothing Then
FeTotal.Cells(65536, Cel2.Column) _
.End(xlUp).Offset(1, 0) = Cel1.Offset(0, 2)
End If
End If
Next Cel1
Set Cel1 = Nothing
Set Cel2 = Nothing
Set Plage = Nothing
Set PlgTitres = Nothing
Set FeTemps = Nothing
Set FeTotal = Nothing
End Sub
Hervé.
"RT" <rthsopmapmson@softscreen.be> a écrit dans le message news:
zDJQc.205136$P84.10350646@phobos.telenet-ops.be...
Bonjour
Je commence à utiliser les macro VBA de plus en plus
Le gros problème est que cela devient vite une drogue et que l'on en
veux
de
plus en plus
Je me suis payé une bible VBA et j'étudie les week-end
Mais aujourd'hui y a un truc que je voudrais au moins mettre en route
rapidement
Sur une feuille j'introduis les heures de début (colonne A) et de fin
(colonne C) grace à des boutons/macro et en fin (colonne D) j'ai le
temps
passé
Dans la colonne B j'incris le nom du projet
Ce que je voudrais faire c'est une macro(accroché à un bouton) qui:
Verifie le nom du projet en B sur toutes les lignes non marqué en
colonne E
Récupère le temps en D sur la même ligne
Ajoute ce temps dans le première cellule vide d'une colonne d'une
seconde feuille (Total Time)
Mais dans la colonne dont le titre est le même que le nom en B
Et chaque fois marque d'un X en colonne E pour dire que cette
ligne
est
comptalisé
Après y encore des trucs à faire, mais je crois que je me
débrouillerai
Une réponse rapide serait TRES appréciée
Merci à tous
Rex
Salut Hervé
Merci pour la réponse
L'idée de mettre une X dans une cellule adjacente est simplement pour que
cette ligne soit considérée comme comptabilisée
Je vais essayer d'être claire, mais souvient toi que je suis British.
Cette macro serait lancée en fin de journée pour comptabiliser les heures
passées sur différents projets
Mais si le lendemain je la relance il ne faut pas qu'elle recomptabilise
les
lignes comptabilisés la veille
Et il n'est pas question de les supprimer après les avoir comptabilisées
car
elle doivent encore servir à d'autre calculs
La croix sert uniquement de temoin pour dire que ces lignes ne doivent
plus
être traitées
Maintenant si tu as une autre idée, par exemple, en fin de macro les
déplacer sur une autre feuille, c'est tout aussi bon
Le principal est qu'elle ne soit traitées qu'une seule fois
Est-ce que tu comprends mieux maintenant?
Je sais que ce n'est pas toujours évident d'expliquer à quelqu'un ce qui
simple pour soit
C'est parce que chacun à sa logique personnelle et elle est souvent (dans
mon cas) incompréhensible pour les autres
Merci et à plus tard
PS Je suis encore au boulot pour une heure, si j'ai le courage je
continuerai demain sinon on se tape (du clavier) lundi
Bon week end
Rex
"Hervé" wrote in message
news:Salut Rex,
Il y a quelques points que je n'ai pas très bien compris comme : "Et
chaquefois marque d'un X en colonne E pour dire que cette ligne est
comptalisé"
car si le temps est inscit dans la ligne cela ne veux t'il pas dire
qu'il
aété ajouté ? ou alors, il faut que le temps soit totalisé et non inscrit
dans la 1ère cellule vide de la colonne correspondante. Fait déjà un
test
sur une copie de ton classeur et tiens moi au courant :
Sub AjouteTemps()
Dim FeTotal As Worksheet
Dim FeTemps As Worksheet
Dim Plage As Range
Dim PlgTitres As Range
Dim Cel1 As Range
Dim Cel2 As Range
'feuille où sont récupérées
'les valeurs, à adapter !!!
Set FeTemps = Worksheets("Feuil1")
'exécute la proc par
'rapport à la colonne B
With FeTemps
Set Plage = .Range(.[B2], _
.[B65536].End(xlUp))
End With
Set FeTotal = Worksheets("Total Time")
'ligne d'entetes de colonnes
'contenant les noms de projets
With FeTotal
Set PlgTitres = .Range(.[A1], _
.[IV1].End(xlToLeft))
End With
'balaye la plage et recupère les valeurs
'si dans la colonne E la cellule est vide
'puis recherche dans les titres le nom du
'projet correspondant afin de coller la
'valeur dans la 1ère cellule vide
For Each Cel1 In Plage
If Cel1.Offset(0, 3) = "" Then
Set Cel2 = PlgTitres.Find(Cel1.Value, _
, xlValues)
If Not Cel2 Is Nothing Then
FeTotal.Cells(65536, Cel2.Column) _
.End(xlUp).Offset(1, 0) = Cel1.Offset(0, 2)
End If
End If
Next Cel1
Set Cel1 = Nothing
Set Cel2 = Nothing
Set Plage = Nothing
Set PlgTitres = Nothing
Set FeTemps = Nothing
Set FeTotal = Nothing
End Sub
Hervé.
"RT" a écrit dans le message news:
zDJQc.205136$Bonjour
Je commence à utiliser les macro VBA de plus en plus
Le gros problème est que cela devient vite une drogue et que l'on en
veuxdeplus en plus
Je me suis payé une bible VBA et j'étudie les week-end
Mais aujourd'hui y a un truc que je voudrais au moins mettre en route
rapidement
Sur une feuille j'introduis les heures de début (colonne A) et de fin
(colonne C) grace à des boutons/macro et en fin (colonne D) j'ai le
tempspassé
Dans la colonne B j'incris le nom du projet
Ce que je voudrais faire c'est une macro(accroché à un bouton) qui:
Verifie le nom du projet en B sur toutes les lignes non marqué en
colonne E
Récupère le temps en D sur la même ligne
Ajoute ce temps dans le première cellule vide d'une colonne d'une
seconde feuille (Total Time)
Mais dans la colonne dont le titre est le même que le nom en B
Et chaque fois marque d'un X en colonne E pour dire que cette
ligne
estcomptalisé
Après y encore des trucs à faire, mais je crois que je me
débrouillerai
Une réponse rapide serait TRES appréciée
Merci à tous
Rex
Re salut,
çà y est, je pense avoir compris, tu veux simplement inscrire une croix
dans
la colonne E de la feuille où tu récupère tes valeurs, d'où le contrôle si
il n'y a rien d'inscrit dans la dite colonne. En reprenant le code, il te
sera possible de l'améliorer. Voilà le code retouché :
Sub Totalise()
Dim FeTotal As Worksheet
Dim FeTemps As Worksheet
Dim Plage As Range
Dim PlgTitres As Range
Dim Cel1 As Range
Dim Cel2 As Range
'feuille où sont récupérées
'les valeurs
Set FeTemps = Worksheets("Feuil1")
'exécute la proc par
'rapport à la colonne B
With FeTemps
Set Plage = .Range(.[B2], _
.[B65536].End(xlUp))
End With
Set FeTotal = Worksheets("Total Time")
'ligne d'entetes de colonnes
'contenant les noms de projets
With FeTotal
Set PlgTitres = .Range(.[A1], _
.[IV1].End(xlToLeft))
End With
'balaye la plage et recupère les valeurs
'si dans la colonne E la cellule n'a pas
'de croix "X" puis recherche dans les titres
'le nom du projet correspondant afin de
'coller la valeur dans la 1ère cellule vide
'puis marque la ligne comme comptabilisée
'inscription d'une "X"
For Each Cel1 In Plage
If Cel1.Offset(0, 3) = "" Then
Set Cel2 = PlgTitres.Find(Cel1.Value, _
, xlValues)
If Not Cel2 Is Nothing Then
FeTotal.Cells(65536, Cel2.Column) _
.End(xlUp).Offset(1, 0) = Cel1.Offset(0, 2)
End If
Cel1.Offset(0, 3) = "X"
End If
Next Cel1
Set Cel1 = Nothing
Set Cel2 = Nothing
Set Plage = Nothing
Set PlgTitres = Nothing
Set FeTemps = Nothing
Set FeTotal = Nothing
End Sub
Hervé.
"RT" a écrit dans le message news:
ZoMQc.205264$Salut Hervé
Merci pour la réponse
L'idée de mettre une X dans une cellule adjacente est simplement pour
que
cette ligne soit considérée comme comptabilisée
Je vais essayer d'être claire, mais souvient toi que je suis British.
Cette macro serait lancée en fin de journée pour comptabiliser les
heures
passées sur différents projets
Mais si le lendemain je la relance il ne faut pas qu'elle recomptabilise
leslignes comptabilisés la veille
Et il n'est pas question de les supprimer après les avoir comptabilisées
carelle doivent encore servir à d'autre calculs
La croix sert uniquement de temoin pour dire que ces lignes ne doivent
plusêtre traitées
Maintenant si tu as une autre idée, par exemple, en fin de macro les
déplacer sur une autre feuille, c'est tout aussi bon
Le principal est qu'elle ne soit traitées qu'une seule fois
Est-ce que tu comprends mieux maintenant?
Je sais que ce n'est pas toujours évident d'expliquer à quelqu'un ce qui
simple pour soit
C'est parce que chacun à sa logique personnelle et elle est souvent
(dans
mon cas) incompréhensible pour les autres
Merci et à plus tard
PS Je suis encore au boulot pour une heure, si j'ai le courage je
continuerai demain sinon on se tape (du clavier) lundi
Bon week end
Rex
"Hervé" wrote in message
news:Salut Rex,
Il y a quelques points que je n'ai pas très bien compris comme : "Et
chaquefois marque d'un X en colonne E pour dire que cette ligne est
comptalisé"car si le temps est inscit dans la ligne cela ne veux t'il pas dire
qu'ilaété ajouté ? ou alors, il faut que le temps soit totalisé et non
inscrit
dans la 1ère cellule vide de la colonne correspondante. Fait déjà un
testsur une copie de ton classeur et tiens moi au courant :
Sub AjouteTemps()
Dim FeTotal As Worksheet
Dim FeTemps As Worksheet
Dim Plage As Range
Dim PlgTitres As Range
Dim Cel1 As Range
Dim Cel2 As Range
'feuille où sont récupérées
'les valeurs, à adapter !!!
Set FeTemps = Worksheets("Feuil1")
'exécute la proc par
'rapport à la colonne B
With FeTemps
Set Plage = .Range(.[B2], _
.[B65536].End(xlUp))
End With
Set FeTotal = Worksheets("Total Time")
'ligne d'entetes de colonnes
'contenant les noms de projets
With FeTotal
Set PlgTitres = .Range(.[A1], _
.[IV1].End(xlToLeft))
End With
'balaye la plage et recupère les valeurs
'si dans la colonne E la cellule est vide
'puis recherche dans les titres le nom du
'projet correspondant afin de coller la
'valeur dans la 1ère cellule vide
For Each Cel1 In Plage
If Cel1.Offset(0, 3) = "" Then
Set Cel2 = PlgTitres.Find(Cel1.Value, _
, xlValues)
If Not Cel2 Is Nothing Then
FeTotal.Cells(65536, Cel2.Column) _
.End(xlUp).Offset(1, 0) = Cel1.Offset(0, 2)
End If
End If
Next Cel1
Set Cel1 = Nothing
Set Cel2 = Nothing
Set Plage = Nothing
Set PlgTitres = Nothing
Set FeTemps = Nothing
Set FeTotal = Nothing
End Sub
Hervé.
"RT" a écrit dans le message news:
zDJQc.205136$Bonjour
Je commence à utiliser les macro VBA de plus en plus
Le gros problème est que cela devient vite une drogue et que l'on en
veuxdeplus en plus
Je me suis payé une bible VBA et j'étudie les week-end
Mais aujourd'hui y a un truc que je voudrais au moins mettre en
route
rapidement
Sur une feuille j'introduis les heures de début (colonne A) et de
fin
(colonne C) grace à des boutons/macro et en fin (colonne D) j'ai le
tempspassé
Dans la colonne B j'incris le nom du projet
Ce que je voudrais faire c'est une macro(accroché à un bouton) qui:
Verifie le nom du projet en B sur toutes les lignes non marqué
en
colonne E
Récupère le temps en D sur la même ligne
Ajoute ce temps dans le première cellule vide d'une colonne
d'une
seconde feuille (Total Time)
Mais dans la colonne dont le titre est le même que le nom en B
Et chaque fois marque d'un X en colonne E pour dire que cette
ligneestcomptalisé
Après y encore des trucs à faire, mais je crois que je me
débrouillerai
Une réponse rapide serait TRES appréciée
Merci à tous
Rex
Re salut,
çà y est, je pense avoir compris, tu veux simplement inscrire une croix
dans
la colonne E de la feuille où tu récupère tes valeurs, d'où le contrôle si
il n'y a rien d'inscrit dans la dite colonne. En reprenant le code, il te
sera possible de l'améliorer. Voilà le code retouché :
Sub Totalise()
Dim FeTotal As Worksheet
Dim FeTemps As Worksheet
Dim Plage As Range
Dim PlgTitres As Range
Dim Cel1 As Range
Dim Cel2 As Range
'feuille où sont récupérées
'les valeurs
Set FeTemps = Worksheets("Feuil1")
'exécute la proc par
'rapport à la colonne B
With FeTemps
Set Plage = .Range(.[B2], _
.[B65536].End(xlUp))
End With
Set FeTotal = Worksheets("Total Time")
'ligne d'entetes de colonnes
'contenant les noms de projets
With FeTotal
Set PlgTitres = .Range(.[A1], _
.[IV1].End(xlToLeft))
End With
'balaye la plage et recupère les valeurs
'si dans la colonne E la cellule n'a pas
'de croix "X" puis recherche dans les titres
'le nom du projet correspondant afin de
'coller la valeur dans la 1ère cellule vide
'puis marque la ligne comme comptabilisée
'inscription d'une "X"
For Each Cel1 In Plage
If Cel1.Offset(0, 3) = "" Then
Set Cel2 = PlgTitres.Find(Cel1.Value, _
, xlValues)
If Not Cel2 Is Nothing Then
FeTotal.Cells(65536, Cel2.Column) _
.End(xlUp).Offset(1, 0) = Cel1.Offset(0, 2)
End If
Cel1.Offset(0, 3) = "X"
End If
Next Cel1
Set Cel1 = Nothing
Set Cel2 = Nothing
Set Plage = Nothing
Set PlgTitres = Nothing
Set FeTemps = Nothing
Set FeTotal = Nothing
End Sub
Hervé.
"RT" <rthsopmapmson@softscreen.be> a écrit dans le message news:
ZoMQc.205264$pf4.10381417@phobos.telenet-ops.be...
Salut Hervé
Merci pour la réponse
L'idée de mettre une X dans une cellule adjacente est simplement pour
que
cette ligne soit considérée comme comptabilisée
Je vais essayer d'être claire, mais souvient toi que je suis British.
Cette macro serait lancée en fin de journée pour comptabiliser les
heures
passées sur différents projets
Mais si le lendemain je la relance il ne faut pas qu'elle recomptabilise
les
lignes comptabilisés la veille
Et il n'est pas question de les supprimer après les avoir comptabilisées
car
elle doivent encore servir à d'autre calculs
La croix sert uniquement de temoin pour dire que ces lignes ne doivent
plus
être traitées
Maintenant si tu as une autre idée, par exemple, en fin de macro les
déplacer sur une autre feuille, c'est tout aussi bon
Le principal est qu'elle ne soit traitées qu'une seule fois
Est-ce que tu comprends mieux maintenant?
Je sais que ce n'est pas toujours évident d'expliquer à quelqu'un ce qui
simple pour soit
C'est parce que chacun à sa logique personnelle et elle est souvent
(dans
mon cas) incompréhensible pour les autres
Merci et à plus tard
PS Je suis encore au boulot pour une heure, si j'ai le courage je
continuerai demain sinon on se tape (du clavier) lundi
Bon week end
Rex
"Hervé" <hmsilve@wanadoo.fr> wrote in message
news:uBIyDr7eEHA.3612@TK2MSFTNGP12.phx.gbl...
Salut Rex,
Il y a quelques points que je n'ai pas très bien compris comme : "Et
chaque
fois marque d'un X en colonne E pour dire que cette ligne est
comptalisé"
car si le temps est inscit dans la ligne cela ne veux t'il pas dire
qu'il
a
été ajouté ? ou alors, il faut que le temps soit totalisé et non
inscrit
dans la 1ère cellule vide de la colonne correspondante. Fait déjà un
test
sur une copie de ton classeur et tiens moi au courant :
Sub AjouteTemps()
Dim FeTotal As Worksheet
Dim FeTemps As Worksheet
Dim Plage As Range
Dim PlgTitres As Range
Dim Cel1 As Range
Dim Cel2 As Range
'feuille où sont récupérées
'les valeurs, à adapter !!!
Set FeTemps = Worksheets("Feuil1")
'exécute la proc par
'rapport à la colonne B
With FeTemps
Set Plage = .Range(.[B2], _
.[B65536].End(xlUp))
End With
Set FeTotal = Worksheets("Total Time")
'ligne d'entetes de colonnes
'contenant les noms de projets
With FeTotal
Set PlgTitres = .Range(.[A1], _
.[IV1].End(xlToLeft))
End With
'balaye la plage et recupère les valeurs
'si dans la colonne E la cellule est vide
'puis recherche dans les titres le nom du
'projet correspondant afin de coller la
'valeur dans la 1ère cellule vide
For Each Cel1 In Plage
If Cel1.Offset(0, 3) = "" Then
Set Cel2 = PlgTitres.Find(Cel1.Value, _
, xlValues)
If Not Cel2 Is Nothing Then
FeTotal.Cells(65536, Cel2.Column) _
.End(xlUp).Offset(1, 0) = Cel1.Offset(0, 2)
End If
End If
Next Cel1
Set Cel1 = Nothing
Set Cel2 = Nothing
Set Plage = Nothing
Set PlgTitres = Nothing
Set FeTemps = Nothing
Set FeTotal = Nothing
End Sub
Hervé.
"RT" <rthsopmapmson@softscreen.be> a écrit dans le message news:
zDJQc.205136$P84.10350646@phobos.telenet-ops.be...
Bonjour
Je commence à utiliser les macro VBA de plus en plus
Le gros problème est que cela devient vite une drogue et que l'on en
veux
de
plus en plus
Je me suis payé une bible VBA et j'étudie les week-end
Mais aujourd'hui y a un truc que je voudrais au moins mettre en
route
rapidement
Sur une feuille j'introduis les heures de début (colonne A) et de
fin
(colonne C) grace à des boutons/macro et en fin (colonne D) j'ai le
temps
passé
Dans la colonne B j'incris le nom du projet
Ce que je voudrais faire c'est une macro(accroché à un bouton) qui:
Verifie le nom du projet en B sur toutes les lignes non marqué
en
colonne E
Récupère le temps en D sur la même ligne
Ajoute ce temps dans le première cellule vide d'une colonne
d'une
seconde feuille (Total Time)
Mais dans la colonne dont le titre est le même que le nom en B
Et chaque fois marque d'un X en colonne E pour dire que cette
ligne
est
comptalisé
Après y encore des trucs à faire, mais je crois que je me
débrouillerai
Une réponse rapide serait TRES appréciée
Merci à tous
Rex
Re salut,
çà y est, je pense avoir compris, tu veux simplement inscrire une croix
dans
la colonne E de la feuille où tu récupère tes valeurs, d'où le contrôle si
il n'y a rien d'inscrit dans la dite colonne. En reprenant le code, il te
sera possible de l'améliorer. Voilà le code retouché :
Sub Totalise()
Dim FeTotal As Worksheet
Dim FeTemps As Worksheet
Dim Plage As Range
Dim PlgTitres As Range
Dim Cel1 As Range
Dim Cel2 As Range
'feuille où sont récupérées
'les valeurs
Set FeTemps = Worksheets("Feuil1")
'exécute la proc par
'rapport à la colonne B
With FeTemps
Set Plage = .Range(.[B2], _
.[B65536].End(xlUp))
End With
Set FeTotal = Worksheets("Total Time")
'ligne d'entetes de colonnes
'contenant les noms de projets
With FeTotal
Set PlgTitres = .Range(.[A1], _
.[IV1].End(xlToLeft))
End With
'balaye la plage et recupère les valeurs
'si dans la colonne E la cellule n'a pas
'de croix "X" puis recherche dans les titres
'le nom du projet correspondant afin de
'coller la valeur dans la 1ère cellule vide
'puis marque la ligne comme comptabilisée
'inscription d'une "X"
For Each Cel1 In Plage
If Cel1.Offset(0, 3) = "" Then
Set Cel2 = PlgTitres.Find(Cel1.Value, _
, xlValues)
If Not Cel2 Is Nothing Then
FeTotal.Cells(65536, Cel2.Column) _
.End(xlUp).Offset(1, 0) = Cel1.Offset(0, 2)
End If
Cel1.Offset(0, 3) = "X"
End If
Next Cel1
Set Cel1 = Nothing
Set Cel2 = Nothing
Set Plage = Nothing
Set PlgTitres = Nothing
Set FeTemps = Nothing
Set FeTotal = Nothing
End Sub
Hervé.
"RT" a écrit dans le message news:
ZoMQc.205264$Salut Hervé
Merci pour la réponse
L'idée de mettre une X dans une cellule adjacente est simplement pour
que
cette ligne soit considérée comme comptabilisée
Je vais essayer d'être claire, mais souvient toi que je suis British.
Cette macro serait lancée en fin de journée pour comptabiliser les
heures
passées sur différents projets
Mais si le lendemain je la relance il ne faut pas qu'elle recomptabilise
leslignes comptabilisés la veille
Et il n'est pas question de les supprimer après les avoir comptabilisées
carelle doivent encore servir à d'autre calculs
La croix sert uniquement de temoin pour dire que ces lignes ne doivent
plusêtre traitées
Maintenant si tu as une autre idée, par exemple, en fin de macro les
déplacer sur une autre feuille, c'est tout aussi bon
Le principal est qu'elle ne soit traitées qu'une seule fois
Est-ce que tu comprends mieux maintenant?
Je sais que ce n'est pas toujours évident d'expliquer à quelqu'un ce qui
simple pour soit
C'est parce que chacun à sa logique personnelle et elle est souvent
(dans
mon cas) incompréhensible pour les autres
Merci et à plus tard
PS Je suis encore au boulot pour une heure, si j'ai le courage je
continuerai demain sinon on se tape (du clavier) lundi
Bon week end
Rex
"Hervé" wrote in message
news:Salut Rex,
Il y a quelques points que je n'ai pas très bien compris comme : "Et
chaquefois marque d'un X en colonne E pour dire que cette ligne est
comptalisé"car si le temps est inscit dans la ligne cela ne veux t'il pas dire
qu'ilaété ajouté ? ou alors, il faut que le temps soit totalisé et non
inscrit
dans la 1ère cellule vide de la colonne correspondante. Fait déjà un
testsur une copie de ton classeur et tiens moi au courant :
Sub AjouteTemps()
Dim FeTotal As Worksheet
Dim FeTemps As Worksheet
Dim Plage As Range
Dim PlgTitres As Range
Dim Cel1 As Range
Dim Cel2 As Range
'feuille où sont récupérées
'les valeurs, à adapter !!!
Set FeTemps = Worksheets("Feuil1")
'exécute la proc par
'rapport à la colonne B
With FeTemps
Set Plage = .Range(.[B2], _
.[B65536].End(xlUp))
End With
Set FeTotal = Worksheets("Total Time")
'ligne d'entetes de colonnes
'contenant les noms de projets
With FeTotal
Set PlgTitres = .Range(.[A1], _
.[IV1].End(xlToLeft))
End With
'balaye la plage et recupère les valeurs
'si dans la colonne E la cellule est vide
'puis recherche dans les titres le nom du
'projet correspondant afin de coller la
'valeur dans la 1ère cellule vide
For Each Cel1 In Plage
If Cel1.Offset(0, 3) = "" Then
Set Cel2 = PlgTitres.Find(Cel1.Value, _
, xlValues)
If Not Cel2 Is Nothing Then
FeTotal.Cells(65536, Cel2.Column) _
.End(xlUp).Offset(1, 0) = Cel1.Offset(0, 2)
End If
End If
Next Cel1
Set Cel1 = Nothing
Set Cel2 = Nothing
Set Plage = Nothing
Set PlgTitres = Nothing
Set FeTemps = Nothing
Set FeTotal = Nothing
End Sub
Hervé.
"RT" a écrit dans le message news:
zDJQc.205136$Bonjour
Je commence à utiliser les macro VBA de plus en plus
Le gros problème est que cela devient vite une drogue et que l'on en
veuxdeplus en plus
Je me suis payé une bible VBA et j'étudie les week-end
Mais aujourd'hui y a un truc que je voudrais au moins mettre en
route
rapidement
Sur une feuille j'introduis les heures de début (colonne A) et de
fin
(colonne C) grace à des boutons/macro et en fin (colonne D) j'ai le
tempspassé
Dans la colonne B j'incris le nom du projet
Ce que je voudrais faire c'est une macro(accroché à un bouton) qui:
Verifie le nom du projet en B sur toutes les lignes non marqué
en
colonne E
Récupère le temps en D sur la même ligne
Ajoute ce temps dans le première cellule vide d'une colonne
d'une
seconde feuille (Total Time)
Mais dans la colonne dont le titre est le même que le nom en B
Et chaque fois marque d'un X en colonne E pour dire que cette
ligneestcomptalisé
Après y encore des trucs à faire, mais je crois que je me
débrouillerai
Une réponse rapide serait TRES appréciée
Merci à tous
Rex