Comment extraire quelques lignes d'un fichier Excel automatiquement ?

Résolu
aecj Messages postés 20 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 29 décembre 2009 - 22 déc. 2009 à 09:37
aecj Messages postés 20 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 29 décembre 2009 - 29 déc. 2009 à 14:44
Bonjour,
J'éspère que quelqu'un pourra me venir en aide... ça urge !
J'ai un fichier Excel ( un planning des activités d'une association ), dans lequel la case du jour est le repère ( remplissage jaune et hachuré ).
J'aimerais extraire ( par rapport à cette date du jour ), les prochaines activités de l'association automatiquement lorsqu'on sauvegarde le fichier.
ça me serait d'un très grand secours si quelqu'un pouvait m'aiguiler...
j'ai aucune connaissance en vba !
merci d'avance

39 réponses

aecj Messages postés 20 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 29 décembre 2009 1
23 déc. 2009 à 20:56
Renfield et ucfoutu,
je ne comprends rien a votre échange...
une petite rectification: le jour et date sort correctement, c'est moi qui avait oublié de changer l'année dans ma simulation.
reste à éclaircir le problème d'un mois à l'autre !?
je peux malheuresement pas vous aider, désolé.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 déc. 2009 à 22:06
comme je t'ai dit...

remplace Date par vdIn

sinon ca recherche toujours en fonction de la date du jour...
(tu aurais du faire un copier coller)

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
aecj Messages postés 20 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 29 décembre 2009 1
24 déc. 2009 à 12:17
Renfield,
Une toute petite chose encore...
Ce fichier Excel et donc le résultat de cette macro (une ligne: jour, date, activité) se trouve sur le site d'une association.
Le fichier sera mis a jour par une personne qui rentrera les activités et sauvegardera ce planning. Et donc maintenant, automatiquement génèrera un fichier dont le contenu sera cette ligne.
Ce que je ne sait pas encore, c'est comment voir cette ligne (sans devoir cliquer sur un lien) dans une de mes pages de mon site appelée: Actualités immédiates.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 déc. 2009 à 12:45
pas sur d'avoir compris cette dernière question...

première fois que tu parle de site web...

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aecj Messages postés 20 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 29 décembre 2009 1
24 déc. 2009 à 16:51
le fichier Excel est déposé sur un site web, accessible par tout internaute pour la visualisation.
le fichier est protégé par mot de passe pour la personne qui est chargée d'en faire la mise à jour ( parex: le xx.xx pas cours, le xx.xx stage de danse,...).Donc les internautes/membres de l'association ont une vue globale des activités de l'année et mensuelle.
Mais j'ai également crée une autre page qui s'appelle "Actualités immédiates", dans laquelle je veux faire apparaitre le résultat de la macro que tu as réalisé (dans cette page je veux que cette actu s'ouvre automatiquement et saute aux yeux).
merci, j'éspère avoir été clair.
0
aecj Messages postés 20 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 29 décembre 2009 1
28 déc. 2009 à 21:31
En fait, j'aimerais juste encore pouvoir créer automatiquement ( avec chaque sauvegarde du fichier Excel ) un fichier html avec comme contenu uniquement le résultat de la macro. Renfield !?
0
aecj Messages postés 20 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 29 décembre 2009 1
28 déc. 2009 à 22:34
Renfield,
J'ai réussi à créer automatiquement un fichier mht ( single web page ) avec l'actu !
Sauf qu'une chose qui ne fonctionne pas ce sont retranscriptions des jours et dates du mois de janvier (2010 apr ex.)...
Y-a-t-il un souci lorsqu'on change d'année ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 déc. 2009 à 08:19
pardon, qu'est-ce qui ne fonctionne pas ?


(dans ton fichier html ou dans l'excel ?)

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
aecj Messages postés 20 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 29 décembre 2009 1
29 déc. 2009 à 09:12
Bonjour Renfield,
L'actu fonctionne dans tous les cas testés sauf par ex. dans le cas présent ( aujourd'hui ou jusqu'à la fin janvier 2010, la macro ne retranscrit pas le jour et la date de l'actualité de janvier... comme en février par ex.)
les actus arrivent toutes de cette façon: samedi, 13 février 2010 - Stage à Carquereine, sauf pour janvier: Soirée interne (sans donner le jour et la date)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 déc. 2009 à 09:27
Aujourd'hui, normallement, c'est encore : "treve de noel, il n'y aura pas cours", non

c'est ce qui est codé, du fait des "/"

si ce n'est pas ce que tu souhaites, supprime :

        For nRowIndex = 4 To 4 + Day(vdIn)
            If LenB(.Cells(nRowIndex, 6)) Then
                If LenB(.Cells(nRowIndex, 7)) Then
                    sEvent = .Cells(nRowIndex, 7)
                End If
            Else
                sEvent = vbNullString
            End If
        Next



Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
aecj Messages postés 20 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 29 décembre 2009 1
29 déc. 2009 à 09:40
Ce n'est pas ça le problème;
modifie l'horloge systeme de ton pc sur le 01.janvier 2010 ou 03.janvier 2010;
tu n'obtiendras pas de jour ni date sur le résultat de ta macro !?
les prochains events arrivent sans jour/date et uniquement par ex. reprise des cours...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 déc. 2009 à 09:51
a cause des / qui trainent en tête, ok...
faudrait aller chercher la mention "fin des cours..."
une solution possible (de tête):

Public Function TodayTip(Byval vdIn As Date) As String
Dim nSheetIndex As Long
Dim sEvent As String
Dim nRowIndex As Long
    nSheetIndex = Month(vdIn) + 5
    If nSheetIndex > 13 Then
        nSheetIndex = nSheetIndex - 12
    End If
    
    With Worksheets(nSheetIndex)
        For nRowIndex = 4 To 4 + Day(vdIn)
            If LenB(.Cells(nRowIndex, 6)) Then
                If LenB(.Cells(nRowIndex, 7)) Then
                    sEvent = .Cells(nRowIndex, 7)
                End If
            Else
                sEvent = vbNullString
            End If
        Next
        If LenB(sEvent) = 0 Then
            If LenB(.Cells(4 + Day(vdIn), 6)) Then
    sEvent = TodayTip(DateSerial(Year(vdIn), Month(vdIn),0))                  
            Else
            For nRowIndex = 4 + Day(vdIn) To 34
                If LenB(.Cells(nRowIndex, 7)) Then
                    sEvent = FormatDateTime(DateSerial(Year(vdIn), Month(vdIn), .Cells(nRowIndex, 5)), vbLongDate) & " - " & .Cells(nRowIndex, 7)
                    Exit For
                End If
            Next
            End If
        End If
   If LenB(sEvent) = 0 Then
    sEvent = TodayTip(DateSerial(Year(vdIn), Month(vdIn)+1,1))      
End If
        TodayTip = sEvent
    End With
End Function



Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
aecj Messages postés 20 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 29 décembre 2009 1
29 déc. 2009 à 10:50
Je suis désolé Renfield, ça ni change rien.
si tu enlève les "/" , tu verra de toi-même.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 déc. 2009 à 11:03
pas besoin de jouer avec la date de ton poste, suffit d'ecrire :

=TodayTip("1/1/2010")
ou

=TodayTip("2/1/2010")

J'ai néanmoins corrigé mon code, j'ai remplacé un 4 par un trois :

Public Function TodayTip(ByVal vdIn As Date) As String
Dim nSheetIndex As Long
Dim sEvent As String
Dim nRowIndex As Long
    nSheetIndex = Month(vdIn) + 5
    If nSheetIndex > 13 Then
        nSheetIndex = nSheetIndex - 12
    End If
    
    With Worksheets(nSheetIndex)
        For nRowIndex = 4 To 3 + Day(vdIn)
            If LenB(.Cells(nRowIndex, 6)) Then
                If LenB(.Cells(nRowIndex, 7)) Then
                    sEvent = .Cells(nRowIndex, 7)
                End If
            Else
                sEvent = vbNullString
            End If
        Next
        If LenB(sEvent) = 0 Then
            If LenB(.Cells(4 + Day(vdIn), 6)) Then
                sEvent = TodayTip(DateSerial(Year(vdIn), Month(vdIn), 0))
            Else
                For nRowIndex = 4 + Day(vdIn) To 34
                    If LenB(.Cells(nRowIndex, 7)) Then
                        sEvent = FormatDateTime(DateSerial(Year(vdIn), Month(vdIn), .Cells(nRowIndex, 5)), vbLongDate) & " - " & .Cells(nRowIndex, 7)
                        Exit For
                    End If
                Next
            End If
        End If
        If LenB(sEvent) = 0 Then
            sEvent = TodayTip(DateSerial(Year(vdIn), Month(vdIn) + 1, 1))
        End If
        TodayTip = sEvent
    End With
End Function


Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
aecj Messages postés 20 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 29 décembre 2009 1
29 déc. 2009 à 11:52
ça reste pareil...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 déc. 2009 à 12:01
euh...

j'ai refait le test, ca tourne bien chez moi...

? Cells(39,12).FormulaLocal, Cells(39,12).Value
=todaytip(MAINTENANT()) du 18.12.09 au 03.01.10: Trève de Noël / il n'y aura pas cours !



? Cells(40,12).FormulaLocal, Cells(40,12).Value
=todaytip("1/1/2010") du 18.12.09 au 03.01.10: Trève de Noël / il n'y aura pas cours !


? Cells(42,12).FormulaLocal, Cells(42,12).Value
=todaytip("3/1/2010") Soirée interne de la nouvelle année


? Cells(43,12).FormulaLocal, Cells(43,12).Value
=todaytip("4/1/2010") Reprise des cours


? Cells(44,12).FormulaLocal, Cells(44,12).Value
=todaytip("5/1/2010") samedi 13 février 2010 - Stage à Carqueiranne: il n'y aura pas de cours durant cette période


? Cells(41,12).FormulaLocal, Cells(41,12).Value
=todaytip("2/1/2010") Soirée interne de la nouvelle année





Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
aecj Messages postés 20 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 29 décembre 2009 1
29 déc. 2009 à 12:16
NON. tu en as la preuve, avec tes résultats d'au-dessus !
- les résultats 1, 2, 3, 4 et 6 sortent sans jour et date: ex. Soirée interne de la nouvelle année
(pour 1 et 2, une date sort parceque c'est contenu dans le commentaire)
- par contre le résultat 5 sort correctement avec jour et date: samedi 13 février 2010 - Stage à Carqueiranne: il n'y aura pas de cours durant cette période
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 déc. 2009 à 14:31
OK !

Il manque la date dans le libellé ^^
Je pensais qu'il manquait tout....

cette ligne :

sEvent = .Cells(nRowIndex, 7)

permet de renvoyer le libellé. (dans le cas des vacances)
j'avais pas remis la date car ca concerne une plage de date...

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
aecj Messages postés 20 Date d'inscription dimanche 29 novembre 2009 Statut Membre Dernière intervention 29 décembre 2009 1
29 déc. 2009 à 14:44
Renfield,
Je te remercie.
ça fonctionne à merveille !
Je te souhaite une merveilleuse nouvelle année.
0
Rejoignez-nous