Remplissage automatique et saut de ligne

Bonjour à vous

Je me permet de me tourner vers vous car j'ai un soucis particulier avec une macro excel que je n'arrive pas à mettre en place, je m'explique :

J'ai une sorte de formulaire reprenant les points essentiels des dossiers que je traite. Je remplis chaque cellule avec les informations correspondante et j'aimerais pouvoir transposer le tout sur un autre tableau de "Listing".

Donc pour vulgariser et comme vous le verrez dans le fichier ci joint, je veux que les éléments en feuille 3 passe en feuille 1 à chaque validation. Bien sûr à chaque validation la macro doit pouvoir sauter une ligne afin de faire un listing sur une période donnée.

Ci joint mon fichier https://www.cjoint.com/c/HJplKnihdgg

Si vous avez le dossier sous les yeux, j'aimerais que les éléments mit dans le formulaire de réponse passe dans la feuille Listing AO après avoir cliquer sur le bouton "Valider". J'ai normalement réussi cette première étape, mais comment faire en sorte qu'il saute une ligne si celle du dessus est déjà prise ?

Pourriez vous m'aider ? Je n'ai que quelques bases sur Excel

Merci d'avance !

Je me permets de up le sujet pour y joindre mon fichier via le module intégré au site.

Mon lien peut ne pas donner envie aux plus sceptiques d'entre vous

Bonjour Mistorike !

Bienvenue sur le forum !

Voici ci-joint ton fichier modifié avec un code qui reviens à la ligne à chaque validation

Il y a certaine colonne je ne savais pas à quoi elles correspondaient !

Je te laisse tester et revenir vers nous si sa ne conviens pas ;D

Ci-dessous le code, ci-joint le fichier :

Sub Valider()
Dim x As Long
x = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets(1).Cells(x, 1) = Cells(2, 3)
Sheets(1).Cells(x, 1).NumberFormat = "m/d/yyyy"
Sheets(1).Cells(x, 2) = Cells(3, 3)
Sheets(1).Cells(x, 3) = Cells(4, 3)
Sheets(1).Cells(x, 5) = Cells(5, 3)
Sheets(1).Cells(x, 6) = Cells(6, 3)
Sheets(1).Cells(x, 7) = Cells(8, 3)
Sheets(1).Cells(x, 8) = Cells(13, 3)
Sheets(1).Cells(x, 9) = Cells(7, 3)
Sheets(1).Cells(x, 9).NumberFormat = "m/d/yyyy"
Sheets(1).Cells(x, 8) = Cells(13, 3)
Sheets(1).Rows(x).HorizontalAlignment = xlCenter
End Sub
17pour-mistorik.xlsm (26.78 Ko)

C'est juste PA-FAIT.

Je vais m'amuser un petit peu avec le dossier histoire de comprendre la logique derrière tes codes !

J'hésiterais pas à revenir vers vous si besoin. Vous êtes excellent.

Encore merci !

Bonjour Juice, le forum,

je propose cette petite optimisation de ton code VBA :

Option Explicit

Sub Valider()
  Dim x&
  With Worksheets(1)
  x = .Cells(Rows.Count, 1).End(3).Row + 1
    .Cells(x, 1) = [C2]                      'Date courante
    .Cells(x, 1).NumberFormat = "d/m/yyyy"
    .Cells(x, 2) = [C3]                      'Nom du client / prospect = Donneur d'ordre
    If [C4] <> "" Then .Cells(x, 3) = [C4]   'Code SAP (si existant)
    .Cells(x, 5) = [C5]                      'Zone (code postal) = Localisation
    .Cells(x, 6) = [C6]                      'FDV Secteur = INGC Secteur
    .Cells(x, 7) = [C8]                      'Moyenne du potentiel estimé = Potentiel estimé
    .Cells(x, 8) = [C13]                     'Durée du marché = Durée
    .Cells(x, 9) = [C7]                      'Deadline (date limite de remise du dossier)
    .Cells(x, 9).NumberFormat = "d/m/yyyy"
    .Rows(x).HorizontalAlignment = xlCenter
  End With
End Sub

remarques :

* y'a aucun inconvénient à utiliser With .. End With ; améliore lisibilité / vitesse du code

(référence de la 1ère feuille calculée une seule fois, et mise en mémoire vive)

* pourquoi avais-tu mis le format date "m/d/yyyy" au lieu de "d/m/yyyy" ? (2×)

* le Code SAP pouvant être absent, j'ai ajouté le test : If [C4] <> "" Then

* attention : tu avais mis ce doublon : Sheets(1).Cells(x, 8) = Cells(13, 3)

dhany

Salut Dhany !

Merci pour cette optimisation de ce code Je prend bonne note de tes remarques pour mes prochaines écritures

* y'a aucun inconvénient à utiliser With .. End With ; améliore lisibilité / vitesse du code

(référence de la 1ère feuille calculée une seule fois, et mise en mémoire vive)

Il faudrait que je prenne l'habitude de me servir du With en effet !

Le Sheets(1) dans mon code est très répétitif x)

* pourquoi avais-tu mis le format date "m/d/yyyy" au lieu de "d/m/yyyy" ? (2×)

Vue l'heure à laquelle j'ai posté mon code, c'est que j'ai du me dépêcher à l'écrire pour aller manger xDD

Puis copier / coller pour le (2x)

* le Code SAP pouvant être absent, j'ai ajouté le test : If [C4] <> "" Then

J'y avais pas prêté attention x)

* attention : tu avais mis ce doublon : Sheets(1).Cells(x, 8) = Cells(13, 3)

En effet ! Encore merci ;D

Rechercher des sujets similaires à "remplissage automatique saut ligne"