Formulaire qui renseigne des cellules et en copie d'autres

Bonjour à tous !

J'ai un petit soucis à soumettre, même si je me doute que la réponse est probablement excessivement bête vu que je suis tête en l'air !

Pour faire simple, je renseigne une ligne grâce à un formulaire (D'ailleurs parmi ces champs renseigner je souhaite inclure un numéro à incrémenter et je n'y arrive pas, mais c'est un autre sujet)

Jusque là tout va bien.
Sauf que je ne renseigne que certaines cellules de la ligne. Je souhaite copier / coller les autres cellules de la ligne, ici, depuis la ligne 8.

J'ai le sentiment que le soucis vient de la toute fin de mon code. Me trompe-je ?

Merci beaucoup et excellente fin de journée !

'Bouton Ajouter
Private Sub CommandButton_ajouter_Click()
        'Coloration des Labels en noir (&H80000012 = couleur de base de la propriété ForeColor)
    Label_statut.ForeColor = &H80000012
    Label_ddj.ForeColor = &H80000012
    Label_numéro.ForeColor = &H80000012
    Label_service.ForeColor = &H80000012
    Label_problématique.ForeColor = &H80000012
    Label_important.ForeColor = &H80000012
    Label_urgent.ForeColor = &H80000012

    'Contrôles des champs
    If ComboBox_statut = -1 Then 'Si pas de statut
        Label_statut.ForeColor = RGB(255, 0, 0)
    ElseIf TextBox_date = "" Then 'Si pas de date
        Label_ddj.ForeColor = RGB(255, 0, 0)
    ElseIf TextBox_numéro = "" Then 'Si pas de numéro
        Label_numéro.ForeColor = RGB(255, 0, 0)
    ElseIf ComboBox_service = -1 Then 'Si pas de service
        Label_service.ForeColor = RGB(255, 0, 0)
    ElseIf TextBox_problématique = "" Then 'Si pas de problématique
        Label_problématique.ForeColor = RGB(255, 0, 0)
    ElseIf ComboBox_important.ListIndex = -1 Then 'Si pas de pays
        Label_important.ForeColor = RGB(255, 0, 0)
    ElseIf ComboBox_urgent.ListIndex = -1 Then 'Si pas de pays
        Label_urgent.ForeColor = RGB(255, 0, 0)
    Else

        Dim ligne As Integer

        ligne = Cells(Rows.Count, 1).End(xlUp).Row + 1 'doute sur numéro base 1 (mp)

        'Insertion des valeurs sur la feuille
        Cells(ligne, 1) = ComboBox_statut
        Cells(ligne, 2) = TextBox_date
        Cells(ligne, 3) = TextBox_numéro
        Cells(ligne, 4) = ComboBox_service
        Cells(ligne, 6) = TextBox_problématique
        Cells(ligne, 10) = ComboBox_important
        Cells(ligne, 11) = ComboBox_urgent

        'Après insertion, réinitialisation du formulaire
        ComboBox_statut.ListIndex = -1
        TextBox_date = ""
        TextBox_numéro = ""
        ComboBox_service.ListIndex = -1
        TextBox_problématique = ""
        ComboBox_important.ListIndex = -1
        ComboBox_urgent.ListIndex = -1
    End If

        Dim source As Range
     Set source = Me.Range("A8,H8:I8,L8:R8")
    source.Copy

    Dim cible As Range
    Set cible = Me.Range("A8:A" & Me.Rows.Count).Find("") 

    If Not cible Is Nothing Then
        Call cible.PasteSpecial(xlPasteAll)
    End If

    End Sub

Bonjour Lylatt, bonjour le forum,

Il est où le fichier qui va bien, qui nous permettrait de tester et de t'aider ?!...

Bonjour ThauThème,

Désolé du temps de réponse, j'étais en congés, mais merci de t'intéresser à ma demande.
Tu as tout à fait raison, je n'ai donné que le code ce qui est plus que léger et un peu idiot de ma part. Certainement le besoin de repos.

Voici donc une copie du fichier. Je suis tout ouïe pour un précieux conseil.

Excellente journée à tous !

Bonjour Lylatt, bonjour le forum,

Je ne comprends pas ton code. Pourquoi recopier la cellule en colonne A de la première ligne ? la ComboBox Statut n'a plus d'intérêt alors...

Dis-moi exactement quelle est la plage à recopier de la ligne 8 dans la ligne que tu viens d'ajouter...

Je pense que c'est normal que tu ne comprennes pas, mon code n'est certainement pas optimal, truffé de coquilles et mon explication n'est peut être pas évidente.
Pour répondre à ta question, la plage à recopier de la ligne 8 sur la futur ligne qu'on ajoute (qui vient toujours se positionner en dessous) est la suivante :

De F8 à I8 inclus et de L8 à R8 inclus, le reste étant renseigné par mon formulaire.

Re,

En pièce jointe ton fichier modifié. J'ai commenté les lignes ajoutées et marqué celles modifiées.

Tu avait un problème avec Me qui dans une UserForm, renvoie l'UserForm en cours et pas l'onglet actif. Et tu t'étais aussi bien mélangé les pinceaux avec la plage source...

5lylatt-ed-v01.xlsm (73.30 Ko)


Merci ThauThème, ça fonctionne parfaitement au poil. C'est exactement ce que je voulais. Je considère le sujet comme clos, merci pour le coup de main.

Je vais maintenant essayer de comprendre de plus près ma bêtise grâce à tes indications précieuses. Encore merci !

Je reviens sur le sujet pour deux raisons :

1/ J'ai étudier ton code, c'est quand même autre chose que ce que j'avais fait, tes annotations sont bien utiles pour comprendre le tout, surtout quand on apprend sur le tas comme moi et je crois avoir capté quelques nouvelles choses grâce à ton travail, donc encore merci !
2/ J'aimerai savoir dans quelle mesure il est possible de copier les items (à savoir ici les menus déroulants) des colonnes A, E, J, K, N et O. En effet la mise en forme automatique de la ligne et de diverses formules dépendent de ces cases et les changer à la volée par la suite, une fois le traitement en cours, m'est extrêmement utile.

Merci de l'info et bonne journée à tous !

Re,

Rajoute ces lignes :

'Numéro de ligne de la première cellule vide de la colonne 1 en partant du bas de la feuille
ligne = OG.Cells(Rows.Count, 1).End(xlUp).Row + 1 

OG.Rows(8).Copy '<---------- ici
OG.Rows(ligne).PasteSpecial xlPasteValidation '<---------- ici
OG.Rows(ligne).PasteSpecial xlPasteFormats '<---------- ici

'Insertion des valeurs sur la feuille

Salut ThauThème,

Le .PasteSpecial fait totalement son office et le tout fonctionne à merveille.
Je crois que je peux définitivement fermer le sujet.

Bravo et surtout, encore merci d'avoir prit le temps et d'avoir annoté le code, c'est très formateur.

Rechercher des sujets similaires à "formulaire qui renseigne copie"