Automatiser l'écriture de données les une en dessous des autres

Bonjour à tous !

Je rencontre actuellement une difficulté dans l'élaboration de mon fichier de suivi.

Dans la partie "onglet vierge", je souhaiterai lorsque je clique sur mon bouton "archiver contrat en cours" que les données situées dans une ligne au dessus ( cellules B10 : I10) viennent se renseigner dans mon tableau "historique contrats" (cellules C14 :I14 ) --> jusque là j'ai réussi à écrire cette demande. MAIS je souhaiterai qu'en cas d'archive de plusieurs contrats les lignes viennent s'ajouter en dessous de celles déjà "archivées". (ligne 15,16,... )

Ma question est comment intégrer une boucle permettant à ma macro d'écrire les lignes dans les lignes dites "vides", c'est à dire les une en dessous des autres ?

J'ai essayé de comprendre et de trouver la solution via d'autres sujets postés auparavant mais je n'arrive pas du tout à l'intégrer sur ma macro. Je ne vois pas où et comment le faire.

Je suis totalement néophyte en VBA, il s'agit là de mon 1er fichier et je souhaite m'améliorer et comprendre. J'utilise beaucoup le mode "enregistrement de macro", mais celui-ci à ses limites lorsque je bloque...

Merci par avance pour votre aide.

En pièce jointe mon fichier.

Rémi

PS : et bien entendu je suis preneur de quelque tuyaux pour m'améliorer :-) )

11suivi-cddi.xlsm (92.61 Ko)

Bonjour à tous et Joyeux temps des Fêtes !

Je ne sais pas si le fichier va te convenir j'ai désactivé une feuille tu auras juste à l'adapter à ton fichier

à ta convenance PS évite les Select...

Vois si cela te convient

Bonne journée !

7suivi-cddi.xlsm (89.84 Ko)

Bonjour

Ci joint ma solution

5suivi-cddi.xlsm (240.14 Ko)

A+ François

Bonjour à tous

Si j'ai compris ton problème pour archiver les contrats, voici la procédure que je te propose:

Sub Archiver_contrat()
'
' Archiver_contrat Macro
'
For i = 14 To 20
    If Range("C" & i) = "" Then
        Range("D10:F10").Copy Range("C" & i)
        Range("H10:I10").Copy Range("H" & i)
        Exit For
    End If
Next

    Range("D10:F10").ClearContents

End Sub

Bonne fin de journée

Bonjour à tous et merci pour votre aide et vos réponses rapides.

Merci Nordik_Nation et Fanfan38 mais ce n'est pas la solution attendue, je me suis peut être mal exprimé.

Mais Patty5046 m'a proposé la solution qui fonctionne parfaitement ! Un grand merci, et surtout plus simple en écriture que ce que j'avais fait !

Dernière petite question, comment préciser le fait de juste copier les données (sans la couleur de fond) pour conserver la couleur orange du tableau lorsque les cellule viennent se coller ?

Merci !

Bonjour

Essaie comme cela :

For i = 14 To 20
    If Range("C" & i) = "" Then
         Range("D10:F10").Copy
         Range("C" & i).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
         Range("H10:I10").Copy
         Range("H" & i).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
        Exit For
    End If
Next

    Range("D10:F10").ClearContents

Bonne journée

C'est super ça fonctionne parfaitement.

Merci beaucoup pour votre aide !

Belle journée.

Rechercher des sujets similaires à "automatiser ecriture donnees dessous"