Copier et Coller selon une condition de dates

Bonjour à tous,

je me confronte à un problème que je ne sais même pas comment aborder, manque de connaissance.

J'ai une plage de cellule en D8:E8 qui contiens deux valeurs

En B20:D32 j'ai un tableau avec en colonne B les 12 mois de l'année et en ligne 20 les en têtes de colonnes.

Ce que j'aimerais faire c'est copier les cellules en D8:E8 et les coller dans la plage C21:D32 avec pour condition que le coller se fasse sur la ligne 21 pour le mois de Janvier, sur la ligne 22 pour le mois de Février... le tout via un bouton

J'avoue ne pas du tout maitriser les conditions de date dans les macro... débutant powa

j'en appel donc à votre pour essayer de m'éclairer si possible

Un grand merci d'avance à ceux qui prendrons le temps de me lire et/ou de me répondre

11osecours.xlsm (47.50 Ko)

Bonjour,

voici le code si j'ai bien compris

    
Range("C20").End(xlDown).Offset(1, 0) = Range("D8").Value
Range("D20").End(xlDown).Offset(1, 0) = Range("E8").Value
    

Bonjour Vince

Déjà merci pour ton retour et merci pour le code mais je ne pense pas qu'il corresponde malheureusement.

J'ai du mal m'expliquer, je retente.

En fait le fichier sera mis à jour plusieurs fois dans le mois du coup il faudrait que durant tout le mois de Janvier les valeurs soient collé dans la ligne 21, la dernière mis à jour écrasant les valeurs déjà présente.

Puis pour le mois de Février même chose mais sur la ligne 22 ... (j'ai mis un document en pièce jointe en cas)

Si je ne dis pas de bêtise, ton code va coller les valeurs les unes à la suite des autres sans prendre en compte le mois en cours, non ?

Re,

désolé je ne suis plus à mon poste. Si tu n'es pas pressé je fais ça demain.

je l'étais pas non plus

Je me suis couché avec la frustration d'un echec c'est horrible

Et voilà en espérant que c'est ce que tu souhaites !

Sub Macro1()
    dateComplete = Split(Date, "/") 'On sépare la date dans un tableau
    dateComplete(1) = "05"
     'Pour tester tu peux modifier cette valeur correspondant au numéro du mois actuel, sinon tu peux supprimer la ligne
    LesMois = Array("Erreur", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
    Worksheets(1).UsedRange.Find(LesMois(dateComplete(1))).Offset(0, 1) = Range("D8").Value
    Worksheets(1).UsedRange.Find(LesMois(dateComplete(1))).Offset(0, 2) = Range("E8").Value
End Sub

Cordialement

Alors un immense merci, ça fonctionne d'enfer !

Mais si je peux abuser tu peux m'expliquer comment elle fonctionne ? Que je puissent la remettre en place si un jour cela arrive...

Typiquement, je comprend pas comment tu détermine la zone du coller

Encore un immense merci !

En fait je fais pas un littéralement un copier/coller.

Tout d'abord je stock dans un tableau (demande si tu ne vois pas ce que c'est) chaque parti de la date en séparant par "/" (split), par exemple:

17/07/2019 devient dateComplete(0) = 17; dateComplete(1) = 07; dateComplete(2) = 2019;

On a donc le numéro du mois. Je stock dans un autre tableau le nom des mois par ordre dans le tableau LesMois.

Je récupère le nom du mois avec LesMois(dateComplete(1)), ce qui me retourne "Juillet" pour 07.

Puis

.Find(LesMois(dateComplete(1))).Offset(0, 1)

permet de trouver la cellule égale à Juillet (grâce à find) et de décaler d'une cellule à droite avec Offset.

Enfin je prend la valeur qui m’intéresse

Range("D8").Value

et je stock cette valeur dans la cellule que j'ai identifier précédemment.

Pour ce qui est du copier/coller, j'ai fais quelque chose de semblable à ça :

a = 1
b = 2
a = b
'Valeur final : a = 2 et b= 2

N'hésite pas si tu as encore des questions ou si je n'ai pas été suffisamment clair.

c'est très clair !

Mais du coup, c'est qui les tableaux ?

si j'ai bien compris c'est une sorte de grille qui permet de faire des calculs en fond et de n'afficher que les résultats c'est ça ?

Un tableau c'est comme un placard chaque tiroir possède une valeur.

Pour accéder à la valeur du premier tiroir tu dois faire

dateComplete(0)

et là tu te demandes pourquoi 0.

C'est propre au tableau ils commencent (en VBA) par 0, la première valeur est dans le tiroir 0. Si tu as suivis tu comprends que la deuxième valeur est situé dans

dateComplete(1)

En somme un tableau permet de stocker beaucoup (ou non) de valeur, un cas d'exemple est de vouloir stocker tout les métiers des employées d'une entreprise. metier(0) = ouvrier, metier(1)=directeur, metier(2)=cuisinier, ....

Dans notre cas, le premier tableau dateComplete stock les informations issue de la date et le second tableau LesMois stock l'intitulé des mois.

Un tableau est une structure de données, c'est à dire qu'elle permet juste de stocker des valeurs et de nous laisser y accéder ensuite.

Je t'invite à suivre ce lien si tu souhaites en apprendre plus. C'est comme ça que j'ai commencé le VBA il y a 3 mois. (J'avais déjà des connaissances en programmation)

D'accord. Merci beaucoup, c'est nettement plus clair.

Je vais suivre ton lien. Mais avant je vais finir de suivre les excellents cours porposé par ce site ^^

Malheureusement je n'ai absolument aucune connaissance en programmation et je suis en mode découverte totale... Du coup c'est un peu un retour à l'école

Encore un grand merci pour l'aide, la réponse, et le petit cours dispensé ! A plus sur le forum (ce qui est très probable car je vais avoir besoin d'encore un peu d'aide avant de pouvoir aider::( )

Le lien que j'ai donnée est sur Excel-pratique également (j'ai aussi appris sur celui-ci et le site du zéro). Bonne continuation

Rechercher des sujets similaires à "copier coller condition dates"