Userform

Bonjour à tous,

j'ai créé un userform sous vba.

Celui ci doit avoir pour fonction de m'ajouter une ligne dans chaque feuille aprés avoir renseigné dans le userform :

le nom de l'agence

et

le groupe dont il dépend (qui placera la ligne nom de l'agence en fonction de ses groupes)

il faudrait aussi qu'il me copie toutes les formules de la ligne précédente ou suivante

est ce que qq pourrait m'aider ??

Merci à tous

abeudeu

Bonsoir

Tu trouveras un peu plus d'aide si

Bonne soirée

Le problème, c'est que ce sont des données un peu sensible, je peux difficilement joindre le fichier !!

par contre, je peux inscrire le code de la userform pour plus d'aide :

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 = ""

' copie la cellule précédente

Me.Hide

End Sub

-- 02 Juin 2011, 10:17 --

j'ai tenté ça, mais ça copie à la fin des lignes et pas dans la ligne créée

' copie la cellule précédente

With Sheets("Synthèse")

'Récupération de la dernière ligne écrite

i = .Cells(65535, 1).End(xlUp).Row

'Yapuka copier sur la ligne suivante

Sheets("Synthèse").Range("B57:Z57").Copy .Cells(i + 1, 1)

End With

Bonjour

Tu crées un fichier avec un userform et les contrôles que tu utilises dans cette macro, tu utilises des données bidons pour la base de donnée

Dans le code l'userform tu y place le code qui ne fonctionne pas comme tu veux

Tu marques de façon distincte ce que tu veux exactement

Et une fois tout ça fait, tu le joins ici

A te lire

Salut banzai et merci de cette réponse....mais j'y pige pas grand chose

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 !!

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 = ""

' 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

End With

Me.Hide

End Sub

Bonjour

A essayer :

Private Sub CommandButton1_Click()
Dim L As Long, i 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 > Range("A" & Rows.Count).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).Insert Shift:=xlDown
' Copie des informations du USF dans la feuille
Cells(L, 1) = TextBox1.Text
' Réinitialise l'USF
TextBox1.Text = ""
' copie la ligne précédente ou la ligne 8
With Sheets("Synthèse")
'Récupération de la dernière ligne écrite
i = .Range("A" & Rows.Count).End(xlUp).Row
'copie de la dernière ligne
.Range("b8:Z8").Copy
'Yapuka copier sur la ligne suivante
.Range("b" & i+1).PasteSpecial Paste:=xlPasteFormulas
End With
Unload Me
End Sub

Amicalement

salut dan,

merci de ton aie mais ça ne marche tjrs pas !! la ligne venant de la userbox se créée bien mais les formules de la ligne précédente ne se copie pas dans la ligne créée, elles apparaissent sur la derniere ligne du tableau !! grrr pas facile cette histoire

re,

Si tu mettais ton fichier en ligne comme te le disais Banzai ce serait plus facile.

Pas sûr mais essaie en remplaçant :

.Range("b8:Z8").Copy
.Range("b" & i+1).PasteSpecial Paste:=xlPasteFormulas

Par

.Range("b" & i & ":Z" & i).Copy .Range("b" & i+1)

Amicalement

ça marche po

tiens voici le fichier, ce sera effectivement plus simple !!

appuyer sur le bouton, "création nouvelle agence", mettre "test", sélectionnez ligne "12", et il faut que les formules de la ligne 8 se copient sur cette nouvelle ligne "test" ...

merci dan

Amicalement

fred

24test-forum.zip (32.38 Ko)

Re,

Ok pour ton fichier mais il n'y a rien dedans pas d'userform, pas le code dont on parle ici.

Le click sur le bouton renvoie une erreur.

Là on ne peut pas t'aider.

ah mince et celui là ?

ah oui, j'aimerais aussi que le userform fasse la meme chose sur la 2e feuille "oup"

merci encore

-- 05 Juin 2011, 10:19 --

voilà le fichier

re,

Dans le fichier que tu as placé, clique sur le bouton ... cela te renvoie une erreur. Le code intertioagence n'est pas présent.

Il y a deux userform dans ce fichier et dans la feuille oup aucune données.

Si tu mets un fichier en ligne la moindre des choses serait tout de même de le contrôler et sinon comment t'aider ??

nan mais regarde le dernier, normalement c bon

Bonjour

sans comprendre la finalité

Dans le code essayes

' copie la ligne précédente ou la ligne 8

With Sheets("Synthèse")

'Récupération de la dernière ligne écrite

i = .Range("a65536").End(xlUp).Row

'copie de la dernière ligne

.Range("b" & i & ":Z" & i).Copy .Range("b" & L)

    ' copie la ligne précédente ou la ligne 8
        With Sheets("Synthèse")
    'Récupération de la dernière ligne écrite
    i = .Range("a65536").End(xlUp).Row
     'copie de la dernière ligne
    .Range("b" & i & ":Z" & i).Copy .Range("b" & L)

re,

nan mais regarde le dernier, normalement c bon

Que crois-tu que j'ai fait ? Tu as regardé ton dernier fichier toi ? Télécharge le et dis moi ce que tu vois

Ah merde purée je suis nul, excuse moi !! regarde la.....

re,

Ce n'est pas plutôt ceci que tu veux faire .. si oui la variable i ne semble pas servir.

Essaie déjà en remplaçant la partie de code :

With Sheets("Synthèse")
    'Récupération de la dernière ligne écrite
    i = .Range("a65536").End(xlUp).Row
     'copie de la dernière ligne
    .Range("b" & i & ":Z" & i).Copy .Range("b" & i + 1)
End With
Me.Hide

par :

With Sheets("Synthèse")
    .Range("b8:Z8").Copy .Range("b" & L)
 End With
Unload Me

Si ok, n'oublie pas de cloturer le fil --> clique sur le v Vert.

Amicalement

super ça marche, merci bcp dan !!

encore une chose, comment je fais pour que ça fasse la meme chose sur les autres feuilles ??? (2 autres feuille) ?

-- 05 Juin 2011, 11:59 --

et saurais tu aussi m'aider pour débloquer la fonction masquer/afficher d'une colonne d'un fichier excel protégé via vba ?

-- 05 Juin 2011, 12:25 --

j'ai un petit bug qd je protège la feuille, il ne veut plus insérer une ligne !!

ça bloque sur :

Rows(L & ":" & L).Insert Shift:=xlDown

-- 05 Juin 2011, 12:29 --

j'essaie de casser le mot de passe le temps d'insérer la ligne mais ça marche po :

For Each wksht In ActiveWorkbook.Worksheets

wksht.Unprotect "pwd"

Next

ActiveWorkbook.ChangeLink Name:=TextBox1.Value, NewName:=TextBox2.Value, Type:=xlExcelLinks

For Each wksht In ActiveWorkbook.Worksheets

wksht.Protect "pwd", , , , UserInterfaceOnly:=True

Next

ActiveWorkbook.Protect "pwd", True

-- 05 Juin 2011, 12:51 --

c'est bon j'ai résolu l'histoire du mot de passe

par contre je n'ai pas résolu le fait de copier sur toutes les feuilles

re,

encore une chose, comment je fais pour que ça fasse la meme chose sur les autres feuilles ??? (2 autres feuille) ?

Là c'est plus complexe à moins que les deux autres feuilles soient structurée de la même manière ??

Dans ce cas il faut savoir :

  • Le nom des feuilles
  • c'est la même USerform qui est utilisée
  • On fait cela sur trois feuilles en même temps ?

laisse tomber je me suis débrouillé sur ce point!!

par contre, je voudrais que quand je réactive mon password, il laisse libre l'accés au format de colonne (afficher/masquer notamment), tu sais comment je peux faire ??

ActiveSheet.Protect "pwd"

Rechercher des sujets similaires à "userform"