XL 2010 copier dans la bonne ligne

loul03

XLDnaute Occasionnel
Bonjour,

j'ai fait un classeur simplifié de ce que je voudrais obtenir par vba, mais que je n'arrive pas à mettre en place.

j'aimerais que la macro vienne remplir la ligne de chacun des élèves (dans l'onglet Feuil1) en fonction du prenom choisi dans l'onglet 2 .
ca semble trop simple, mais c'est pour ensuite ajouter à un code vba plus compliqué.

par avance merci
loul03
 

Pièces jointes

  • copie en face de la bonne ligne.xlsm
    12.8 KB · Affichages: 48

Jacky67

XLDnaute Barbatruc
Bonjour,

j'aimerais que la macro vienne remplir la ligne de chacun des élèves

loul03
Bonjour,
Ceci, attribué au bouton 'Enregistrer' fait ce qui est demandé
VB:
Sub Enregistre()
Dim lig As Long
lig = Application.Match([feuil2!c2], [feuil1!b1:b1000], 0)
With Feuil1
.Range("d" & lig) = [b4]
.Range("e" & lig) = [b5]
.Range("f" & lig) = [b6]
End With
End Sub

*Je ne suis pas certain que ce soit une bonne manière pour constituer une base de donnée
 

loul03

XLDnaute Occasionnel
bonjour,

je n'ai pas saisi où tu avais créer ton userform?

sinon , sais tu m'aider pour mettre bien en forme cette formule vba (pour un autre classeur)
feuil2.Cells(lig,46)=if(freq="Annuelle",freq+365,if(freq="Mensuelle",freq+30,if(freq="+ 100 000km",km+100000,""""))))

par avance merci
 

Jacky67

XLDnaute Barbatruc
bonjour,

je n'ai pas saisi où tu avais créer ton userform?

sinon , sais tu m'aider pour mettre bien en forme cette formule vba (pour un autre classeur)
feuil2.Cells(lig,46)=if(freq="Annuelle",freq+365,if(freq="Mensuelle",freq+30,if(freq="+ 100 000km",km+100000,""""))))

par avance merci
Re...
Cet userform est celui natif d'Excel, il n'est pas nécessaire de le créer.
il est appelé par l'instruction vba
ActiveSheet.ShowDataForm
En ce qui concerne "pour mettre bien en forme cette formule vba"
Il est impossible de donner une aide sur cette formule sans connaître le contexte.
 

loul03

XLDnaute Occasionnel
ok merci de l'info

Dim lig, k
lig = Application.Match(Val(Num_demande), Feuil2.[A1:A65000], 0)
Feuil2.Cells(lig, 10) = Me.DTPicker1 = Now 'valeur en numeric et non en text
Selection.NumberFormat = "m/d/yyyy"
Feuil2.Cells(lig, 11) = Val(Km) 'valeur en numeric et non en text
Feuil2.Cells(lig, 13) = freq
Feuil2.Cells(lig, 14) = presta
Feuil2.Cells(lig, 15) = Ent_1
Feuil2.Cells(lig, 16) = Val(tpe1)
Feuil2.Cells(lig, 17) = Ent_2
Feuil2.Cells(lig, 18) = Val(tpe2)
Feuil2.Cells(lig, 19) = Ent_3
Feuil2.Cells(lig, 20) = Val(tpe3)
Feuil2.Cells(lig, 21) = Ent_4
Feuil2.Cells(lig, 22) = Val(tpe4)
Feuil2.Cells(lig, 23) = Ent_5
Feuil2.Cells(lig, 24) = Val(tpe5)
Feuil2.Cells(lig, 25) = Ent_6
Feuil2.Cells(lig, 26) = Val(tpe6)
Feuil2.Cells(lig, 27) = Ent_7
Feuil2.Cells(lig, 28) = Val(tpe7)
Feuil2.Cells(lig, 29) = Rep_1
Feuil2.Cells(lig, 30) = Val(tpr1)
Feuil2.Cells(lig, 31) = Rep_2
Feuil2.Cells(lig, 32) = Val(tpr2)
Feuil2.Cells(lig, 33) = Rep_3
Feuil2.Cells(lig, 34) = Val(tpr3)
Feuil2.Cells(lig, 35) = Rep_4
Feuil2.Cells(lig, 36) = Val(tpr4)
Feuil2.Cells(lig, 37) = Rep_5
Feuil2.Cells(lig, 38) = Val(tpr5)
Feuil2.Cells(lig, 39) = Rep_6
Feuil2.Cells(lig, 40) = Val(tpr6)
Feuil2.Cells(lig, 41) = Rep_7
Feuil2.Cells(lig, 42) = Val(tpr7)
Feuil2.Cells(lig, 43) = Sum(tpe1 + tpe2 + tpe3 + tpe4 + tpe5 + tpe6 + tpe7 + tpr1 + tpr2 + tpr3 + tpr4 + tpr5 + tpr6 + tpr7)
Feuil2.Cells(lig, 44) = Val(Montant_rep)
NumberFormat = "#,##0.00 $"
Feuil2.Cells(lig, 45) = Commentaire
Feuil2.Cells(lig, 46) = if(freq=""Annuelle"",freq+365,if(freq=""Mensuelle"",freq+30,if(freq=""+ 100 000km"",km+100000,""""))))

j'ai sur un 3ème onglet des cellules qui portent les noms présents dans la formule comme REP_1 Ent_7 et je veux les recopier sur la ligne correspondant au numéro de demande (inscrit en colonne A sur la feuil2 et correspondant à lig) . . ma case freq est une liste déroulante en fonction de laquelle je souhaiterais avoir sur la feuil2 le calcul qui se fait. sauf que vba me met erreur d'expression
 

loul03

XLDnaute Occasionnel
oui

ces formules apparaissent dans le valider du USERFORM 1. (bouton "saisie réparation")

autre chose, si tu sais me dire comment on met une DTpicker=now ce serait cool de ta part

en espérant
 

Pièces jointes

  • essai mat.xlsm
    119.9 KB · Affichages: 49

Jacky67

XLDnaute Barbatruc
oui

ces formules apparaissent dans le valider du USERFORM 1. (bouton "saisie réparation")

autre chose, si tu sais me dire comment on met une DTpicker=now ce serait cool de ta part

en espérant
Re...
Dans ton projet " freq" est un combobox qui peut prendre comme valeur
upload_2016-11-21_16-22-53.png

La cellule "Feuil2.Cells(lig, 46)" doit contenir
Feuil2.Cells(lig, 46) = if(freq=""Annuelle"",freq+365,if(freq=""Mensuelle......
Freq+365 ???
ou
freq+30 ???
Je m'interroge de ce que tu souhaites obtenir.

Edit:
Pour DTpicker
VB:
Private Sub UserForm_Initialize()
Me.DTPicker1.Value = Now
End Sub
 
Dernière édition:

Jacky67

XLDnaute Barbatruc
je pars d'une date d'entretien et je veux si la fréquence est annuelle ajouter 365 jours, 30jours quand c'est mensuel et +100000 quand cest 100000km
Re..
Cela pourrait ressembler à ceci
Code:
'------------------
If Me.freq.Value = "Annuelle" Then Feuil2.Cells(lig, 46) = Feuil2.Cells(lig, "j") + 365
If Me.freq.Value = "Mensuelle" Then Feuil2.Cells(lig, 46) = Feuil2.Cells(lig, "j") + 30
If Me.freq.Value = "+ 100 000km" Then Feuil2.Cells(lig, 46) = Feuil2.Cells(lig, "K") + 100000
'------------------
 

loul03

XLDnaute Occasionnel
bonjour

j'ai mis ca


If Me.freq.Value = "Annuelle" Then Feuil2.Cells(lig, 46) = Feuil2.Cells(lig, 10) + 365
ElseIf Me.freq.Value = "Mensuelle" Then Feuil2.Cells(lig, 46) = Feuil2.Cells(lig, 10) + 30
ElseIf Me.freq.Value = "+ 100 000km" Then Feuil2.Cells(lig, 46) = Feuil2.Cells(lig, 11) + 100000
ElseIf Me.freq.Value = "Imprévu" Then Feuil2.Cells(lig, 46) = """"
Else
End If

mais il me répond erreur de compilation else sans if
 

Jacky67

XLDnaute Barbatruc
bonjour

j'ai mis ca


If Me.freq.Value = "Annuelle" Then Feuil2.Cells(lig, 46) = Feuil2.Cells(lig, 10) + 365
ElseIf Me.freq.Value = "Mensuelle" Then Feuil2.Cells(lig, 46) = Feuil2.Cells(lig, 10) + 30
ElseIf Me.freq.Value = "+ 100 000km" Then Feuil2.Cells(lig, 46) = Feuil2.Cells(lig, 11) + 100000
ElseIf Me.freq.Value = "Imprévu" Then Feuil2.Cells(lig, 46) = """"
Else
End If

mais il me répond erreur de compilation else sans if
Re...
Essaye
'--------------
Feuil2.Cells(lig, 46) =""
If Me.freq.Value = "Annuelle" Then Feuil2.Cells(lig, 46) = Feuil2.Cells(lig, "j") + 365
If Me.freq.Value = "Mensuelle" Then Feuil2.Cells(lig, 46) = Feuil2.Cells(lig, "j") + 30
If Me.freq.Value = "+ 100 000km" Then Feuil2.Cells(lig, 46) = Feuil2.Cells(lig, "K") + 100000
'--------------
 

Discussions similaires

Réponses
12
Affichages
332

Statistiques des forums

Discussions
312 345
Messages
2 087 457
Membres
103 546
dernier inscrit
mohamed tano