Remplir un tableau avec fonction

Bonjour,

Je vous décris rapidement ma situation : je suis en train de créer un fichier excel (voir le modèle ci-joint) destiné à un responsable Santé et Sécurité au travail. Ce fichier comporte plusieurs indicateurs (feuille visite terrain), en gros le responsable fait une visite terrain dans une usine et note les différents indicateurs (pour voir si les principes/dispositifs de sécurité sont respectés dans l'usine). Le responsable fait cette visite terrain chaque semaine.

Mon problème est le suivant : je cherche une fonction (ou macro mais je suis novice en VBA), qui me permettrai dans la feuille [Récapitulatif visites terrain] de remplir les notes automatiquement à l'aide du tableau (Récapitulatif note totale) de la feuille [Visite terrain].

Oui un simple copié/collé fait l'affaire, mais je me demandais si une fonction ou macro existait pour faire cette opération automatiquement.

Merci pour votre aide

Bonjour DaVinci, toutes et tous,

Bienvenue sur le forum.

Voici ma proposition, voyez si elle vous convient.

Cordialement.

Bonjour,

ceci te convient ?

P.

Bonjour patrick1957,

Bien vu avec VBA, c'est une compétence que je ne métrise pas.

Mais comment faire pour corriger l'erreur du n° de semaine régie par la norme ISO 8601:2000 qui définit que la numérotation doit commencer avec la première semaine correspondant au calendrier?

Merci pour l'info

Je pense que celle ci est exacte:

=nosem(B3)

Function NoSem(D As Date) As Long    'Laurent Longre 2004
' fonctionne suivant la norme ISO contrairement à no.semaine()
' ds la feuille : =ENT(MOD(ENT((A1-2)/7)+0.6;52+5/28))+1
Application.Volatile True
D = Int(D)
NoSem = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NoSem = ((D - NoSem - 3 + (Weekday(NoSem) + 1) Mod 7)) \ 7 + 1
End Function

@mdo100 : Merci pour ta réponse, mais je ne cherchais pas à ajouter des lignes dans mon tableau d'origine, mais garder une seule ligne.

@patrick1957 Merci c'est ce que je cherchais ! Mais dans ton code je ne comprends pas où tu colles les données ? Pour copier tu choisis bien les lignes E5:H5, mais je ne vois pas comment tu fais pour choisir la ligne où tu veux coller.

Et est-ce qu'il est possible avec un seul bouton de copier la ligne E5:H5 et de coller la date dans la colonne C et les notes dans les colonnes G, H, I ?

Merci en tous cas pour votre aide

DaVinci a écrit :

@mdo100 : Merci pour ta réponse, mais je ne cherchais pas à ajouter des lignes dans mon tableau d'origine, mais garder une seule ligne.

@patrick1957 Merci c'est ce que je cherchais ! Mais dans ton code je ne comprends pas où tu colles les données ? Je les colle à la dernière ligne libre de l'onglet récapitilatif en colonne C

Pour copier tu choisis bien les lignes E5:H5, mais je ne vois pas comment tu fais pour choisir la ligne où tu veux coller.

Ws2.[C65000].End(xlUp)(2) " est la ligne qui colle en Cx les datas venant de l'autre feuille

Et est-ce qu'il est possible avec un seul bouton de copier la ligne E5:H5 et de coller la date dans la colonne C et les notes dans les colonnes G, H, I ? ???? c'est ce qui est fait non quand tu cliques sur le bouton gris

Merci en tous cas pour votre aide

Quand on clique sur le bouton, la date et les notes se collent dans les colonnes C, D, E et F. Je voulais savoir si je pouvais "séparer" le collage pour continuer à coller la date dans la colonne C mais coller les notes en G, H et I.

Ok ..pigé

Option Explicit

Sub Copier()
Dim Ws1, Ws2 As Worksheet
Dim Desti
Set Ws1 = Sheets("visite terrain"): Set Ws2 = Sheets("Récapitulatif visites terrain")
Set Desti = Ws2.[D65555].End(xlUp)
Ws1.Range("E5").Copy              ' la date de "visite terrain"
Ws2.[C65000].End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
Ws1.Range("F5:H5").Copy         ' les 3 autres données de "visite terrain"
Ws2.[C65000].End(xlUp).Offset(0, 4).PasteSpecial Paste:=xlPasteValues ' on remonte du bas de la colonne C et on décale vers la droite de 4 colonnes
Application.CutCopyMode = False
MsgBox ("copié !")
End Sub

Ok super merci pour ta patience !

Encore juste deux petites questions stp ^^ :

Que veut dire cette ligne : Set Desti = Ws2.[D65555].End(xlUp)

et que signifie le (2) dans la ligne : Ws2.[C65000].End(xlUp)(2).PasteSpecial Paste:=xlPasteValues

DaVinci a écrit :

Ok super merci pour ta patience !

Encore juste deux petites questions stp ^^ :

Que veut dire cette ligne : Set Desti = Ws2.[D65555].End(xlUp)

ws2 est la feuille cible et puis on cherche la dernière ligne libre de D en partant du bas ** s'il n'y a pas de données parasites plus bas !**

et que signifie le (2) dans la ligne :

Ws2.[C65000].End(xlUp)(2).PasteSpecial Paste:=xlPasteValues

la copie se fait sous la dernière ligne occupée, sinon on copierait sur celle ci

Okok merci pour ton aide

Re patrick1957,

Comme j'avais fait une proposition à DaVinci par formule, du coup j'ai suivi le fil de vos explications.

Ce fût très instructif et je pense que je vais m'en servir pour modifier un fichier que je fais par formule depuis longtemps.

Même si je n'étais pas concerné au premier chef, je vous remercie pour cette leçon (gratuite).

Cordialement.

Rechercher des sujets similaires à "remplir tableau fonction"