Coller des cellules automatiquement tous les mois à la même date

astreal - 2 janv. 2014 à 10:03
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 3 janv. 2014 à 16:21
Bonjour,

Je suis débutante sur excel et je bug sur une partie de mon classeur excel. C'est pour un projet que je dois présenter à mon travail. Si vous pouviez m'aider celal serait très gentil.

En simple, sur une feuille (on va ire feuil1) j'ai une tableau avec des données techniques. Ces données sont collectés suivant plusieurs critères.

Les totaux sont inscrit respectivement dans les cases AJ1, AL1;AN1,et AP1. Ces cases évolues tous les jours en fonction des données du tableaux.
Je veux que sur la feuil2 tous les 27 du mois la valeur ce trouvant dans les quatre cases de la feuil1 soit copier et coller dans la colonne B pour janvier (AJ1 en B2, AL1 en B3, AN1 en B4,et AP1 en B5), en C pour février, en D pour mars, et ainsi de-suite.

Cela est-il possible?
Faut-il faire du VBA ou une macro?

Merci d'avance.
A voir également:

10 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 janv. 2014 à 10:08
Bonjour,
Qu'as-tu au moins tenté d'écrire ?
Quelle difficulté spécifique parfaitement isolée rencontres-tu ?
Quant à la date (ton 27 du mois) : quid si le classeur n'est pas ouvert ce jours-là ? Qu'as-tu alors prévu dans ce cas (et là, c'est de la conception) ?
0
astreal Messages postés 7 Date d'inscription jeudi 2 janvier 2014 Statut Membre Dernière intervention 3 janvier 2014
2 janv. 2014 à 10:19
En fait, au début je voulais utiliser une macro et la lancer automatiquement à partir de la feuille par un worksheet_Activate(), mais le truc de la date me bloc, je ne l'ai jamais utilisé et l'on me demande de l'automatisé.
Si le fichier n'est pas ouvert le 27 parce que c'est un week-end mais après le 27, ce n'est pas grave, il faut que lorsqu'il est ouvert si la date du 27 est dépassé, le programme soit exécuté.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 janv. 2014 à 10:32
Bon ...
Mais :
1) Le 29, c'est aussi plus tard que le 27. Et alors ? quid si déjà fait le 28 (par exemple) ? Qu'as-tu prévu pour vérifier que non déjà calculé ?
2) et surtout : on ne voit toujours pas le code que tu as au moins tenté d'écrire !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 2/01/2014 à 10:43
Te rends-tu bien compte de ce que ce dont je te parle à ce stade est de la conception elle-même, avant même toute mise en oeuvre d'un développement (seule vocation de ce forum) ?
0
astreal Messages postés 7 Date d'inscription jeudi 2 janvier 2014 Statut Membre Dernière intervention 3 janvier 2014
2 janv. 2014 à 10:46
oui attend un peu comme cela ne fonctionné pas j'avais tout effacé. je suis entrain de recommencé à écrire.
0
astreal Messages postés 7 Date d'inscription jeudi 2 janvier 2014 Statut Membre Dernière intervention 3 janvier 2014
Modifié par astreal le 2/01/2014 à 12:04
A mon avis il y a plusieurs erreurs. Voici mon code.
 

Private Sub Workbook_Open()
Dim Ind
Dim Lg As Long
Dim I As Integer
Dim Cl As Integer

Ind = Array("AJ1", "AL1", "AN1", "AP1")
Lg = 2
Cl = 2

If Day(Now()) = 27 Then
With Sheets("Alerte de fuite")
For I = 0 To UBound(Dep)
Range(Dep(I)).Copy
.Cells(Lg, Cl + I).PasteSpecial Paste:=xlPasteValues
Next I
End With
Application.CutCopyMode = False

End Sub

Il bug.et je suis coincé.
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 janv. 2014 à 12:12
Si c'est la méthode Copy qui te pose problème, ouvre vite ton aide VBA à la rubrique Range.copy (avec son argument destination)
Mais ton VRAI problème n'est pas vraiment ce seul aspect, que même l'utilisation de l'enregistreur de macros te permettrait de résoudre ...
et réfléchis, dans la foulée, à ce qui se passerait en ouvrant ton classeur le 27, puis en le refermant et l'ouvrant à nouveau (entre autres "petites" choses qui relèvent de la conception).
0
astreal Messages postés 7 Date d'inscription jeudi 2 janvier 2014 Statut Membre Dernière intervention 3 janvier 2014
2 janv. 2014 à 14:33
afin de palier à ce problème j'ai essayé un nouveau code j'ai j'ai toujours un code d'erreur.
Maintenant c'est celui-ci:

 ' Changer ici le numéro de jour
' Si la date du jour est supérieur au 27 et que la dernière copie remonte à plus de 20 jours
If Day(Now()) > 27 And Worksheets("données ADF ,reparation").Range("IV1").End(xlUp).Offset(0, 0) > Day(Now()) - 20 Then

Dim Plage_A_Copier As Range, Plage_Destination As Range

'c'est ici qu'il faut change la plage à copier
Set Plage_A_Copier = Worksheets("Alerte de fuite").Range("AJ1", "AL1", "AN1", "AP1, AS1")

'Redimensionne la plage Destination à la taille de la Plage_A_Copier
Set Plage_Destination = Worksheets("données ADF ,reparation").Range("b2" & [b5].End(xlUp).Row + 1)

With Plage_A_Copier
Set Plage_Destination = Plage_Destination.Resize(.Rows.Count, .Columns.Count)
End With
'"Copie" les valeurs dans la Plage_Destination
Plage_Destination.value = Plage_A_Copier.value

End If

Mon code d'erreur c'est "erreur d'exécution '9': l'indice n'appartient pas à la sélection.
Et rien ne ce passe.

Je suis toujours bloqué et je n'avance pas.
0
astreal Messages postés 7 Date d'inscription jeudi 2 janvier 2014 Statut Membre Dernière intervention 3 janvier 2014
2 janv. 2014 à 14:58
Pour que ce soit plus compréhensible vous en simplifié ce que j'ai sur la première feuille (ligne 1): <> représente une cellule avec une formule à l'intérieur

Total 1:<> Total 2:<> Total3:<> Total 4:<> Mois en cours:<>

Sur la seconde feuille:
Inserer mois en cours : janvier (colonne suivante février, puis mars ...)
Total 1 inserer total 1janvier
Total 2 inserer total 2 janvier
Total 3 inserer total 3 janvier
Total 4 inserer total 4 janvier
0
astreal Messages postés 7 Date d'inscription jeudi 2 janvier 2014 Statut Membre Dernière intervention 3 janvier 2014
Modifié par astreal le 2/01/2014 à 16:34
J'ai encore changer mon code. Maintenant je l'ai mise en macro avec une mise en route auto à l'ouverture du fichier dans workbook, mais j'ai toujour un bug j'ai vraiment besoin d'aide.


Sub autocollectADF()

' Changer ici le numéro de jour
Dim Plage_A_Copier As Range, Plage_Destination As Range
Dim Date_derniere_copie As Integer
Dim Periode_ecart As Integer

Date_derniere_copie = Sheets("données ADF,reparation").Range("IV1").End(xlUp)
Periode_ecart = 20

' Si la date du jour est supérieur au 27 et que la dernière copie remonte à plus de 20 jours
If Day(Now()) > 26 And Date_derniere_copie > Now - Periode_ecart Then


'c'est ici qu'il faut changer la plage à copier
Set Plage_A_Copier = Worksheets("Alerte de fuite").Range("AI1", "AK1", "AM1", "AO1, AQ1")

'Redimensionne la plage Destination à la taille de la Plage_A_Copier
Set Plage_Destination = Worksheets("données ADF ,reparation").Range("b1" & [b5].End(xlUp).Row + 1)

With Plage_A_Copier
Set Plage_Destination = Plage_Destination.Resize(.Rows.Count, .Columns.Count)
End With
'"Copie" les valeurs dans la Plage_Destination
Plage_Destination.value = Plage_A_Copier.value

End If

End Sub

j'ai pas de message d'erreur mais rien ne se passe, même en changeant la date, je ne comprend pas.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 janv. 2014 à 22:24
Rien ne te choque, avec cela :
' Si la date du jour est supérieur au 27 et que la dernière copie remonte à plus de 20 jours
vraiment rien ?
Sans même parler de développement, juste de logique ...
D'une part..
Et d'autre part : je ne vois même pas dans ton code où et comment tu renseignes la cellule abritant Date_derniere_copie
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 3/01/2014 à 08:36
Si tu ne "vois" vraiment pas les raisons de ma remarque, je vais me contenter de t'en donner UNE : la plus évidente parmi d'autres :
- personne pour ouvrir le classeur le 27 février d'une année non bissextile (congé, panne d'électricité, panne informatique, grève ou n'importe quelle autre raison ...)
- personne non plus pour le faire le 28 février (pour la même raison ou pour une autre raison)
- ouverture du classeur le 1er mars ===>> Ah ? 1 < 26 et rien ne se passera donc !
J'insiste : je n'ai mis là en exergue que ce qui était LE PLUS évident. Ce n'est pas la seule raison de ma remarque
Conclusion : dans cette "affaire", le problème est LA LOGIQUE (la conception) BIEN AVANT l'écriture du code...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 janv. 2014 à 10:16
Je crois vraiment que tu vas devoir "repenser" la conception de ton appli.
Si tu veux éviter sérieusement tous les écueils, il va te falloir penser à un mécanisme assez différent, qui te rend indépendant y compris de la valeur de Now. Il va te falloir envisager :
- de travailler avec les dates enregistrées de tes opérations
- de déclencher tes copies, non à l'ouverture du classeur, mais lors de l'inscription d'une nouvelle opération (et on compare les dates à ce moment-là)
- un garde-fou : alerte si Now est antérieure à la date du dernier enregistrement ... (l'horloge du PC peut te faire des blagues, entre autres si pile HS)
etc ...
Si tout cela te parait "barbare", ne ne saurais alors trop te conseiller d'éviter le traitement automatique et d'envisager une intervention manuelle. Plusieurs méthodes sont possibles. La plus simple étant la fermeture (un bouton ad hoc) d'une "session" comptable.
Mais une autre fois : il s'agit là de conception et non de développement (qui, lui, ne viendra qu'une fois bien pensée et arrêtée la conception de ton appli).
0
astreal Messages postés 7 Date d'inscription jeudi 2 janvier 2014 Statut Membre Dernière intervention 3 janvier 2014
3 janv. 2014 à 14:24
Je te l'ai dit au début je ne suis pas une pro de l'informatique, mais une débutante qui demande de l'aide.
Je pensais en trouver ici mais je m'aperçoit qu'apparament non.
(Ce traitement doit absolument être automatisé.)

Et je sais très bien que ce programme ne fonctionne pas et n'est pas parfait, qu'il a des problèmes de logique, de conception, de mise en forme.... si ce n'était pas le cas je ne demanderais pas d'aide.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 3/01/2014 à 16:24
" Je te l'ai dit au début je ne suis pas une pro de l'informatique, "
Il ne s'agit à ce stade pas d'informatique (comment te le dire et redire ?), mais de conception ! Elle serait exactement la même sans informatique, avec deux registres de comptabilité ...
Je pensais en trouver ici mais je m'aperçoit qu'apparament non.
Tu_ n'es pas sur un forum de conception d'applications, mais sur un forum de développement.

PS !: où vois-tu, par exemple, le moindre appel à la moindre connaissance informatique dans ce que j'ai mis en exergue dans mon message du 3 janv. 2014 à 08:36 ? ===>> Nulle part ! ===>> Il ne s'agit que de logique et d'organisation de la pensée, sans rien d'autre !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
Rejoignez-nous