Pb code VBA

Le
Philou36
Bonjour les amis !
Voila j'ai le code suivant :
Sub Créer_Onglet()
For Each c In Range([b4], [b65000].End(xlUp))
On Error Resume Next
temp = Sheets(c.Value).Range("A1").Value
If Err > 0 Then
Sheets("Modele").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = c
ActiveSheet.Hyperlinks.Add Anchor:=c, Address:="", _
SubAddress:="'" & c & "'" & "!A1", TextToDisplay:=c.Value
Worksheets(c.Value).Cells(1, 3) = c

End If
Next
End Sub


Ca marche impeccable mais je voudrais le modifier de la façon suivante :
plutot que d'avoir For Each c In Range([b4], [b65000].End(xlUp))
j'aimerie qu'il boucle à partir de B4 mais avec une variable sur le 4 (avec
cells(..,..) ce qui me permettrait de lire les colonne 3, 4 et 5 pour
pouvoir continuer mon traitement.

Est ce jouable ?

Un grand merci par avance de votre aide

Bonne soirée

Philippe
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #22147281
Bonjour,

Si tu veux lire les colonnes 3, 4 et 5
utilise "Offset(ligne,Colone)"

On peut ainsi transformer ta procédure comme suit :

Sub Créer_Onglet()
Dim C As Range
For Each c In Range([b4], [b65000].End(xlUp))
On Error Resume Next
with C
temp = Sheets(.Value).Range("A1").Value
A = .offset(,1).value 'Colonne C
B = c.offset(,2).value 'Colonne D
C = .offset(,3).value 'Colonne E
end with
If Err > 0 Then
Sheets("Modele").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = c
ActiveSheet.Hyperlinks.Add Anchor:=c, Address:="", _
SubAddress:="'" & c & "'" & "!A1", TextToDisplay:=c.Value
Worksheets(c.Value).Cells(1, 3) = c
End If
Next
End Sub
Philou36
Le #22147761
Bonjour michdenis

Je viens de faire un test, c'est extra.
Grace a toi, je vais pouvoir continuer mon projet.

Un grand merci pour ton aide.

Bonne journée.

Philippe
"michdenis" ujAwTZG%
Bonjour,

Si tu veux lire les colonnes 3, 4 et 5
utilise "Offset(ligne,Colone)"

On peut ainsi transformer ta procédure comme suit :

Sub Créer_Onglet()
Dim C As Range
For Each c In Range([b4], [b65000].End(xlUp))
On Error Resume Next
with C
temp = Sheets(.Value).Range("A1").Value
A = .offset(,1).value 'Colonne C
B = c.offset(,2).value 'Colonne D
C = .offset(,3).value 'Colonne E
end with
If Err > 0 Then
Sheets("Modele").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = c
ActiveSheet.Hyperlinks.Add Anchor:=c, Address:="", _
SubAddress:="'" & c & "'" & "!A1", TextToDisplay:=c.Value
Worksheets(c.Value).Cells(1, 3) = c
End If
Next
End Sub








Philou36
Le #22152111
Rebonjour les amis,

Je pensais m'en sortir tout seul, mais je suis encore bloqué. Mes
connaissances en VBA etant limité, je me tourne vers vous !

Ce matin MichDenis m'a bien dépanné pour ma macro VBA :
Sub Créer_Onglet()
Dim C As Range
For Each C In Range([b4], [b65000].End(xlUp))
On Error Resume Next
With C
temp = Sheets(.Value).Range("A1").Value
DateDebut = .Offset(, 1).Value 'Colonne C
DateFin = .Offset(, 2).Value 'Colonne D
Montant = .Offset(, 3).Value 'Colonne E
End With
If Err > 0 Then
Sheets("Modele").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = C
ActiveSheet.Hyperlinks.Add Anchor:=C, Address:="", _
SubAddress:="'" & C & "'" & "!A1", TextToDisplay:=C.Value
Worksheets(C.Value).Cells(1, 3) = C
' Ligne = 5
' Worksheets(C.Value).Cells(Ligne, 2) = DateDebut
' Worksheets(C.Value).Cells(Ligne, 3) = DateFin
' Worksheets(C.Value).Cells(Ligne, 4) = Montant
End If
Next
End Sub


Cette macro lit le nom qui se trouve dans la colonne B et duplique le
tableau Modele en le nommant par le nom de la personne !

Maintenant les lignes que j'ai mis en commentaire sont le debut de ce que je
veux faire. Apres le nom, il y a une date de début, une date fin et un
montant.
Une fois que l'onglet est créee, je voudrais dans mon onglet obtenir autant
de mois que la période l'indique.
ex : 23/01/2010 =>15/03/2010
avoir les periodes suivantes :
23/01/2010 => 31/01/2010
01/02/2010=>28/02/2010
01/03/2010=>15/03/2010
et recopier le montant sur chacune des periode.
http://cjoint.com/?fvxVPP8Snj
Un grand grand merci pour votre aide.

Bonne soirée

Philippe







"Philou36" un1SNkJ%
Bonjour michdenis

Je viens de faire un test, c'est extra.
Grace a toi, je vais pouvoir continuer mon projet.

Un grand merci pour ton aide.

Bonne journée.

Philippe
"michdenis" ujAwTZG%
Bonjour,

Si tu veux lire les colonnes 3, 4 et 5
utilise "Offset(ligne,Colone)"

On peut ainsi transformer ta procédure comme suit :

Sub Créer_Onglet()
Dim C As Range
For Each c In Range([b4], [b65000].End(xlUp))
On Error Resume Next
with C
temp = Sheets(.Value).Range("A1").Value
A = .offset(,1).value 'Colonne C
B = c.offset(,2).value 'Colonne D
C = .offset(,3).value 'Colonne E
end with
If Err > 0 Then
Sheets("Modele").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = c
ActiveSheet.Hyperlinks.Add Anchor:=c, Address:="", _
SubAddress:="'" & c & "'" & "!A1", TextToDisplay:=c.Value
Worksheets(c.Value).Cells(1, 3) = c
End If
Next
End Sub













michdenis
Le #22152271
A ) un code qui n'est pas fonctionnel n'est d'aucune utilité pour comprendre
une question.
et je suppose que si cela fonctionnait, tu n'aurais pas de question à
soulever!
Si je te donne un itinéraire sans te donner la destination et que je te
demande
de corriger l'itinéraire, tu t'y prends comment ?

B ) Tu veux copier quoi ? Plage de cellules sur quelle feuille ?
Où veux-tu copier ces données ? Nom de la feuille + adresse de la
plage de cellules.

C ) Est-ce que la copie doit se faire selon un ou plusieurs critères ? Si
oui, lesquels ?
Calou
Le #22155611
On 22 mai, 00:19, "michdenis"
A ) un code qui n'est pas fonctionnel n'est d'aucune utilité pour compr endre
une question.
    et je suppose que si cela fonctionnait, tu n'aurais pas de questi on à
soulever!
    Si je te donne un itinéraire sans te donner la destination et q ue je te
demande
    de corriger l'itinéraire, tu t'y prends comment ?

B ) Tu veux copier quoi ? Plage de cellules sur quelle feuille ?
      Où veux-tu copier ces données ? Nom de la feuille + adres se de la
plage de cellules.

C ) Est-ce que la copie doit se faire selon un ou plusieurs critères ? Si
oui, lesquels ?



Bonjour MichDenis,

Je suis vraiment désolé de ne pas avoir été suffisamment clair dans
mes
explications.
Sur ma feuille générale (MENU GENERAL), pour créer une fiche agent, i l
me
suffit de renseigner le nom, date de début et de fin du stage et le
montant
mensuel.

Apres avoir renseigné ces 4 champs, je clique sur le bouton 'Création
Fiche
Stagiaire',
la macro va me dupliquer la feuille 'Modele' en donnant le nom de
l'agent.

Jusque la ca marche !

Maintenant apres la création de l'onglet, j'aurai souhaité renseigner
le
tableau en fonction des informations de la feuille principale.

Si le stage va du 23/01/2010 au 15/03/2010 pour un montant de 400,00
Euros
par
mois
il faudrait que sur l'onglet qui porte le nom de l'agent, je retrouve
les
période suivant :
23/01/2010 => 31/01/2010 au titre du mois de janvier
01/02/2010=>28/02/2010 au titre du mois de février
01/03/2010=>15/03/2010 au titre du mois de mars
avec le montant de 400 Euros sur chacune des 3 périodes.

Je joins le fichier avec la fiche agent telle que je souhaiterai
qu'elle
soit.

http://cjoint.com/?fwwBeSOolP


Un grand merci de votre aide.

A bientot

Philippe
Lolote
Le #22156401
Salut Philou36,
peut être un élément de réponse ici:
http://cjoint.com/?fxkjfPUrQ2

En fait, je me suis servi de ton onglet Modele pour y inclure des
formules et ceci te permet d'avoir tes données en fonction des noms de
ton onglet MenuPrincipal.
En espérant que cela corresponde a tes attentes.
@+ Lolote




Philou36 a écrit :
Rebonjour les amis,

Je pensais m'en sortir tout seul, mais je suis encore bloqué. Mes
connaissances en VBA etant limité, je me tourne vers vous !

Ce matin MichDenis m'a bien dépanné pour ma macro VBA :
Sub Créer_Onglet()
Dim C As Range
For Each C In Range([b4], [b65000].End(xlUp))
On Error Resume Next
With C
temp = Sheets(.Value).Range("A1").Value
DateDebut = .Offset(, 1).Value 'Colonne C
DateFin = .Offset(, 2).Value 'Colonne D
Montant = .Offset(, 3).Value 'Colonne E
End With
If Err > 0 Then
Sheets("Modele").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = C
ActiveSheet.Hyperlinks.Add Anchor:=C, Address:="", _
SubAddress:="'" & C & "'" & "!A1", TextToDisplay:=C.Value
Worksheets(C.Value).Cells(1, 3) = C
' Ligne = 5
' Worksheets(C.Value).Cells(Ligne, 2) = DateDebut
' Worksheets(C.Value).Cells(Ligne, 3) = DateFin
' Worksheets(C.Value).Cells(Ligne, 4) = Montant
End If
Next
End Sub


Cette macro lit le nom qui se trouve dans la colonne B et duplique le
tableau Modele en le nommant par le nom de la personne !

Maintenant les lignes que j'ai mis en commentaire sont le debut de ce que je
veux faire. Apres le nom, il y a une date de début, une date fin et un
montant.
Une fois que l'onglet est créee, je voudrais dans mon onglet obtenir autant
de mois que la période l'indique.
ex : 23/01/2010 =>15/03/2010
avoir les periodes suivantes :
23/01/2010 => 31/01/2010
01/02/2010=>28/02/2010
01/03/2010=>15/03/2010
et recopier le montant sur chacune des periode.
http://cjoint.com/?fvxVPP8Snj
Un grand grand merci pour votre aide.

Bonne soirée

Philippe







"Philou36" un1SNkJ%
Bonjour michdenis

Je viens de faire un test, c'est extra.
Grace a toi, je vais pouvoir continuer mon projet.

Un grand merci pour ton aide.

Bonne journée.

Philippe
"michdenis" ujAwTZG%
Bonjour,

Si tu veux lire les colonnes 3, 4 et 5
utilise "Offset(ligne,Colone)"

On peut ainsi transformer ta procédure comme suit :

Sub Créer_Onglet()
Dim C As Range
For Each c In Range([b4], [b65000].End(xlUp))
On Error Resume Next
with C
temp = Sheets(.Value).Range("A1").Value
A = .offset(,1).value 'Colonne C
B = c.offset(,2).value 'Colonne D
C = .offset(,3).value 'Colonne E
end with
If Err > 0 Then
Sheets("Modele").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = c
ActiveSheet.Hyperlinks.Add Anchor:=c, Address:="", _
SubAddress:="'" & c & "'" & "!A1", TextToDisplay:=c.Value
Worksheets(c.Value).Cells(1, 3) = c
End If
Next
End Sub
















Philou36
Le #22158701
Bonjour Lolote,

c'est extra ! tu as trouve une solution sans passer par le VBA !
j'ai juste modifie car excel ne connaissait pas la fonction FIN.MOIS !
Mille mercis !
Philippe

"Lolote" ew$9y%23k%
Salut Philou36,
peut être un élément de réponse ici:
http://cjoint.com/?fxkjfPUrQ2

En fait, je me suis servi de ton onglet Modele pour y inclure des formules
et ceci te permet d'avoir tes données en fonction des noms de ton onglet
MenuPrincipal.
En espérant que cela corresponde a tes attentes.
@+ Lolote




Philou36 a écrit :
Rebonjour les amis,

Je pensais m'en sortir tout seul, mais je suis encore bloqué. Mes
connaissances en VBA etant limité, je me tourne vers vous !

Ce matin MichDenis m'a bien dépanné pour ma macro VBA :
Sub Créer_Onglet()
Dim C As Range
For Each C In Range([b4], [b65000].End(xlUp))
On Error Resume Next
With C
temp = Sheets(.Value).Range("A1").Value
DateDebut = .Offset(, 1).Value 'Colonne C
DateFin = .Offset(, 2).Value 'Colonne D
Montant = .Offset(, 3).Value 'Colonne E
End With
If Err > 0 Then
Sheets("Modele").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = C
ActiveSheet.Hyperlinks.Add Anchor:=C, Address:="", _
SubAddress:="'" & C & "'" & "!A1", TextToDisplay:=C.Value
Worksheets(C.Value).Cells(1, 3) = C
' Ligne = 5
' Worksheets(C.Value).Cells(Ligne, 2) = DateDebut
' Worksheets(C.Value).Cells(Ligne, 3) = DateFin
' Worksheets(C.Value).Cells(Ligne, 4) = Montant
End If
Next
End Sub


Cette macro lit le nom qui se trouve dans la colonne B et duplique le
tableau Modele en le nommant par le nom de la personne !

Maintenant les lignes que j'ai mis en commentaire sont le debut de ce que
je veux faire. Apres le nom, il y a une date de début, une date fin et un
montant.
Une fois que l'onglet est créee, je voudrais dans mon onglet obtenir
autant de mois que la période l'indique.
ex : 23/01/2010 =>15/03/2010
avoir les periodes suivantes :
23/01/2010 => 31/01/2010
01/02/2010=>28/02/2010
01/03/2010=>15/03/2010
et recopier le montant sur chacune des periode.
http://cjoint.com/?fvxVPP8Snj
Un grand grand merci pour votre aide.

Bonne soirée

Philippe







"Philou36" un1SNkJ%
Bonjour michdenis

Je viens de faire un test, c'est extra.
Grace a toi, je vais pouvoir continuer mon projet.

Un grand merci pour ton aide.

Bonne journée.

Philippe
"michdenis" ujAwTZG%
Bonjour,

Si tu veux lire les colonnes 3, 4 et 5
utilise "Offset(ligne,Colone)"

On peut ainsi transformer ta procédure comme suit :

Sub Créer_Onglet()
Dim C As Range
For Each c In Range([b4], [b65000].End(xlUp))
On Error Resume Next
with C
temp = Sheets(.Value).Range("A1").Value
A = .offset(,1).value 'Colonne C
B = c.offset(,2).value 'Colonne D
C = .offset(,3).value 'Colonne E
end with
If Err > 0 Then
Sheets("Modele").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = c
ActiveSheet.Hyperlinks.Add Anchor:=c, Address:="", _
SubAddress:="'" & c & "'" & "!A1", TextToDisplay:=c.Value
Worksheets(c.Value).Cells(1, 3) = c
End If
Next
End Sub



















Publicité
Poster une réponse
Anonyme