[Catégorie modifiée VB6 -> VBA] Copier coller sur une ligne qui a été créée par

cs_zuip Messages postés 2 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 3 juin 2011 - 2 juin 2011 à 11:17
cs_zuip Messages postés 2 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 3 juin 2011 - 3 juin 2011 à 10:18
Bonjour à tous,
voici mon soucis, je fais ajouter une ligne à une feuille excel par un userform. sur la colonne A apparaitra le nom de l'agence, et j'aimerais que les reste des cellules de la ligne créée se copie automatiquement....et je n'y arrive pas !! voici le code (en gras, mon problème) merci à tous :


Private Sub CommandButton1_Click()
Dim L As Long

' Si on n'entre pas un n°, on le signale et on sort de la Sub
If Not IsNumeric(tbLig.Text) Then
tbLig.Text = ""
MsgBox "Vous devez entrer un nombre"
Exit Sub
End If

L = CLng(tbLig.Text)
' Sile n° de ligne est inférieur à 1 ou supérieur à la derniére ligne libre, on le signale et on sort de la Sub
If L < 1 Or L > [a65536].End(xlUp).Row + 1 Then
tbLig.Text = ""
MsgBox "Vous devez entrer une ligne valide"
Exit Sub
End If

' le informations seront copiées au n° de ligne spécifié
Rows(L & ":" & L).Select
Selection.Insert Shift:=xlDown



' Copie des informations du USF dans la feuille
Cells(L, 1) = TextBox1.Text


' Réinitialise l'USF
TextBox1.Text = ""

[b]' copie la ligne précédente ou la ligne 8
With Sheets("Synthèse")
'Récupération de la dernière ligne écrite
i = .Cells(65535, 1).End(xlUp).Row
'copie de la dernière ligne
Sheets("Synthèse").Range("b8:Z8").Copy
'Yapuka copier sur la ligne suivante
Sheets("Synthèse").Range("b & i").PasteSpecial Paste:=xlPasteFormulas/b

End With


Me.Hide
End Sub

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 juin 2011 à 00:10
Salut

VBA version 6 n'est pas du VB6 (catégorie).

Si tu as une erreur, il serait bon de dire laquelle.
Apparemment, tu sélectionnes les cellules B8 à Z8 et tu ne sélectionnes qu'une seule cellule pour faire le Paste : Excel accepte ça ?
Si tu dois sélectionner une ligne, sélectionne une ligne - Lapalisse (1470-1525).
Exemple à vérifier :
Sheets("Synthèse").Row(8).Copy

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 juin 2011 à 07:03
Bonjour,

Et pour toute la première partie (saisie d'un n° de ligne valide et contrôle de la saisie), j'éviterais tout cela (textbox, commandbutton, etc...) en utilisant tout simplement une inputbox. Tu peux le faire ainsi (exemple) :

Dim L As String, titre As String, mess As String, LR As Long
  LR = Range("A" & Rows.Count).End(xlUp).Row + 1
  titre = "saisir un N° de ligne valide (compris entre 1 et " & LR & ")"
  mess = "j'attends votre saisie"
  'L = InputBox(mess, titre)
  Do While Not IsNumeric(L) Or Val(L) < 1 Or Val(L) > LR
    L = InputBox(mess, titre)
    mess = "saisie incohérente ou hors limites"
  Loop

pour atteindre ton résultat (saisie contrôlée)

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
cs_zuip Messages postés 2 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 3 juin 2011
3 juin 2011 à 10:18
salut jack et merci de ces réponses
si je dois résumer mon soucis, c'est que ce code ne créée pas une nouvelle ligne sur mes 2 autres feuilles et que sur la ligne créée la copie de formule ne se fait pas sur la bonne ligne mais sur la dernière !! si tu sais m'aider, ce serait cool !!

Private Sub CommandButton1_Click()
Dim L As Long

' Si on n'entre pas un n°, on le signale et on sort de la Sub
If Not IsNumeric(tbLig.Text) Then
tbLig.Text = ""
MsgBox "Vous devez entrer un nombre"
Exit Sub
End If

L = CLng(tbLig.Text)
' Sile n° de ligne est inférieur à 1 ou supérieur à la derniére ligne libre, on le signale et on sort de la Sub
If L < 1 Or L > [a65536].End(xlUp).Row + 1 Then
tbLig.Text = ""
MsgBox "Vous devez entrer une ligne valide"
Exit Sub
End If

' le informations seront copiées au n° de ligne spécifié
Rows(L & ":" & L).Select
Selection.Insert Shift:=xlDown


' Copie des informations du USF dans la feuille
Cells(L, 1) = TextBox1.Text


' Réinitialise l'USF
TextBox1.Text = ""

[b] ' copie la ligne précédente ou la ligne 8
With Sheets("Synthèse")
'Récupération de la dernière ligne écrite
i = .Cells(65000, 1).End(xlUp).Row
'copie de la dernière ligne
Sheets("Synthèse").Range("b8:Z8").Copy
'Yapuka copier sur la ligne suivante
Sheets("Synthèse").Range("b" & i).PasteSpecial Paste:=xlPasteFormulas
/b


End With


Me.Hide
End Sub
0
Rejoignez-nous