Copier/ coller des cellules avec vérification VBA

Bonjour,

Etant un grand débutant (très grand, même) en matière de VBA, je fais appel à vous pour m'aider à résoudre mon problème.

Je souhaite copier 2 cellules (O28 et P28) de la feuille "Données" et les coller dans la feuille "Archives réalisé", mais avec 2 règles.

1. Si la valeur copiée en O28 (date du jour) existe déjà dans la colonne B de la feuille "Archives réalisé", je colle les nouvelles valeurs à la place des anciennes (en colonne B et C).

2. Si la valeur copiée en O28 n'est pas présente dans la colonne B de la feuille "Archives réalisé", je cherche la première ligne ou les cellules des colonnes B et C sont vides et je colle mes données.

Merci d'avance pour vos réponses.

Cordialement.

Thierry

Bonjour et bienvenue sur le forum

Tu devrais joindre ton fichier...

Bye !

Voilà, c'est fait.

Il me semblait bien que ce serait plus simple, je n'ai pas dû être assez clair

Bonjour,

il faut que tu procède par itération.

étape 1 : Lecture de la date en "O28" de la feuille "Données" et recuperation de la valeur

étape 2 : boucle sur chaque cellule de la colonne B de la feuille "Archives réalisées"

(FOR)

Condition:

> (IF) si la date existe en colonne B (THEN) alors copie des données sur la ligne correspondante en colonne B

> (ELSE) Sinon copie des données sur la dernière ligne en colonne B

(NEXT)

Avec un fichier se serait mieux

Bonjour office.excel,

Je viens de joindre mon fichier pour exemple.

Je vois bien l'enchaînement des contrôles à réaliser mais l'inconvénient pour moi est de les écrire en VBA.

Bonjour,

Ci joint le fichier avec le code (Module "TEST") et un bouton commande sur la page "données extraites" -> CF PJ...

Le code reprends la logique évoquée ci dessus.

J’espère que cela réponds à la problématique...


Petite explication sur le code, celui ci peu être optimiser bien sur , mais cela te donnera une bonne piste !

Sub test()

Dim i As Integer

Dim d As String

d = Sheets("données").Range("O28").Value 'RECUREPATION DE LA VALEUR'

Sheets("archives réalisé").Select

For i = 4 To 200 'BOUCLE SUR LA COLONNE B de la Feuille ARCHIVE''

If Sheets("archives réalisé").Cells(i, 2).Value = d Then ' ---->TEST si la date est presente dans la colonne B ''

'Si VRAI alors copie des données sur les anciennes ''

Sheets("archives réalisé").Cells(i, 2).Value = Sheets("données").Range("O28").Value

Sheets("archives réalisé").Cells(i, 3).Value = Sheets("données").Range("P28").Value

Else

'Si non , trouve la première ligne vide et copie les nouvelles valeurs correspondants a la date''

Sheets("archives réalisé").Range("B3").Select

Selection.End(xlDown).Select

Selection.Offset(1, 0).Select

ActiveCell.Value = Sheets("données").Range("O28").Value

Sheets("archives réalisé").Range("C3").Select

Selection.End(xlDown).Select

Selection.Offset(1, 0).Select

ActiveCell.Value = Sheets("données").Range("P28").Value

Exit Sub

End If

Next i

End Sub

C'est presque tout bon.

Il y a juste le point suivant qui ne fonctionne pas.

Dans le fichier joint, si on appuie sur le bouton une première fois:

--> les données sont collées en ligne 14 ( Ok, car la date du jour n'est pas présente dans la colonne B)

Si on clique une seconde fois, les données sont collées en ligne 15 au lieu de remplacer celles collées précédemment en 14.

Hello Again,

Yes j'ai modifier l'algorythme afin de rectifier le tire (MODULE "TEST2" ) , normalement c'est ok

(la cellule B2 de la feuille "Archive" sert de temoin si la date est présente ("X) ou non ("-") dans les données de départ a chaque itération

/Office.excel.2017@gmail.com

Re-re bonjour,

Super, ça fonctionne comme je le souhaitais.

Merci beaucoup pour la réponse et la rapidité de celle-ci.

Parfait alors !

Au plaisir !

Simple & Efficace ! ---> https://excel-appli.wixsite.com/excel

/office.excel.2017@gmail.com

/https://excel-appli.wixsite.com/excel

Rechercher des sujets similaires à "copier coller verification vba"