Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Bonjour Roland-M merci pour tes formules c'est nickel dans la BDD mais j'aurais du précisez qu'il devais etre aussi masquer dans la listview mais je pensais si il était masquer dans la Bdd il aurais été également dans la listview de mon USF et ce n'est pas le cas faut il également faire une macro pour cela? merci de ton aide a bientôt
Si tu ne veux pas afficher la valeur dans ta listview, en effet cela se passe au niveau de ta macro. Mais pas la peine de faire une macro spécialement pour ça, inclus le code ci-dessous dans la macro de ton UserForm.
Par exemple dans la macro : Private Sub UserForm_Initialize()
Si tu veux que ta Listview soit rempli dés affichage de ton UserForm. Sinon le mettre dans la macro adéquat.
Code:
[COLOR="green"]' Début de ta macro[/COLOR]
ComboboxListeDate.Clear
For NuméroLigne = 4 To 20
If Cells(NuméroLigne, 1) <> 0 Then ComboboxListeDate.AddItem
Next NuméroLigne
[COLOR="green"]' Fin de ta macro[/COLOR]
Remplacer ComboboxListeDate par le nom de ta Listview.
excuses moi camarade ! mais :
le gros souci avec toi c'est que tu est bordélique !
tu tapes à travers tout !
tu ne suis pas tes fils !
tu en mets trop !
tu n'as même pas vu le classeur que j'ai remis sur le fil précédent
qui est > Actualise une combobox à 13h10
dans lequel j’avais incorporé ce que tu demandais la suppression d’un agent !
alors :
maintenant pour ne pas écraser les formules c’est très facile !
mais il faut de l’organisation et de la rigeur ! ce dont tu n’as pas !
et puis on suit avec le même classeur modèle allégé !
pour ne pas écraser les formules il y a un truc très simple en ce qui te concerne
dans les feuilles on prévoit une première ligne
dans laquelle on mettra un signe par exemple l’astérisque * qui servira de test dans les codes
ceci à chaque colonne ne pouvant être écrasées à la recopie !
mais voilà on ne sait plus où tu en est avec tout ça !?
j’ai modèle qui n’est certainement plus celui actuel
car tu ne gardes pas ce modèle afin de le remettre sur le fil qui doit rester le même !
ceci même avec des questions différentes !
car prendre des codes comme ça à la volée ça ne peu que te mener à la cata !
Je suis dsl d'être bordélique c'est juste qu'ont ma dit si une question était différentes de la précédente de faire un nouveau fil.
ils est vrais quand je bloque sur un truc j'essais de continuer en attendant de trouver une solution et de l'adapter a mon projet j'ai pas encore les bon reflex mais je bosse dur pour essayer pour preuve ma dernière mise a jour avec tous les solutions que tu ma apporter depuis plusieurs jour même en allégeant il reste a 81ko donc je l ai mis sur un site de stockage de fichier
a ceci j'ai rajouter certaine chose comme un code pour empêcher les doublons et un autre ou cas ou le nom et prénom existerais la possibilité de modifier sa ressemble a du bidouillage mais sa a l'air de fonctionner part apport a mes mince connaissance voila donc.
Bonjour a tous je souhaiterais avoir u peut plus d'info svp sur l'atuce plus haut pour pas ecraser mes formule lors d'un ajout de ligne
pour ne pas écraser les formules il y a un truc très simple en ce qui te concerne
dans les feuilles on prévoit une première ligne
dans laquelle on mettra un signe par exemple l’astérisque * qui servira de test dans les codes
ceci à chaque colonne ne pouvant être écrasées à la recopie !
Il te faut une ligne pour placer des * dans les colonnes qui ont des formules
dans les feuilles formation tu as justement des cellules fusionnées
qu’il te faut supprimer pour récupèrer une ligne
tu placera tes entêtes en ligne 4
la ligne 3 libérée servira pour mettre des * dans les colonnes là où il y a des formules.
exemple :
je vois des formules en colonne F je mets donc dans la cellule F3 un *
et ceci à chaque colonne où il y a des formules manuellement
dans le code, à l’enregistrement, au moment d’écrire dans les cellules
on lit les cellules de cette ligne 3
ça donne un truc du genre exemple dans > Sub ButtonMaJ_Click()
. . .
. . .
tu rajoutes > If .Cells(3, NoDeCol) <> "*" Then recopi dans cellule
With Sheets(NomDeLaFeuilFormation)
'les textbox en haut sous ComboBoxBase
If .Cells(lig, 1) = "" Then
If .Cells(3, 1) <> "*" Then .Cells(lig, 1) = TextBoxNoOrdre
If .Cells(3, 2) <> "*" Then .Cells(lig, 2) = TextBoxNom
If .Cells(3, 3) <> "*" Then .Cells(lig, 3) = TextBoxPrenom
If .Cells(3, 4) <> "*" Then .Cells(lig, 4) = TextBoxService
End If
'les textbox en bas sous ListView
If .Cells(3, 5) <> "*" Then .Cells(lig, 5) = TextBoxDernFormation
If .Cells(3, 6) <> "*" Then .Cells(lig, 6) = TextBoxDateLimitRecycl
If .Cells(3, 7) <> "*" Then .Cells(lig, 7) = TextBoxPrevisFormation
If .Cells(3, 8) <> "*" Then .Cells(lig, 8) = TextBoxComment
If .Cells(3, 9) <> "*" Then .Cells(lig, 9) = TextBoxJourRestant
End With
maintenant, tu dis ceci au début de ton message :
> Bonjour a tous je souhaiterais avoir u peut plus d'info svp sur l'atuce plus haut pour pas ecraser mes formule lors d'un ajout de ligne
il faut savoir que ça n'écrasera pas les formules parceque simplement on ne recopi pas de données à ces endroit !
concernant l'ajout de ligne ça n'écrase ni ne crée rien du tout
il faudrait revoir ton code pour justement créer ces formules par code VBA sinon à chaque ajout de ligne tu vas devoir aller copier tes formules
il y a encore du travail !
EDIT
'exemple pour coller la formule suivante en F6 "=SI(E6<>"";E6+10;"")
'avec sa colonne no 6 pour F et son No de Ligne
'variable Lig pour no de Ligne et la col testée E . . . ça donne ceci :
F$ = "=SI(E" & Lig & "<>" & Chr(34) & Chr(34) & ";E" & Lig & "+10;" & Chr(34) & Chr(34) & ")"
.Cells(Lig, 6).FormulaLocal = F$
.
Alors j'ai essayer de faire ce que tu ma dis je pense que j'ai reussis en partis c'est à dire pour ne pas copier les colonne ayan une (*)
Code:
With Sheets(NomDeLaFeuilFormation)
'les textbox en haut sous ComboBoxBase
If .Cells(lig, 1) = "" Then
If .Cells(3, 1) <> "*" Then .Cells(lig, 1) = TextBoxNoOrdre
If .Cells(3, 2) <> "*" Then .Cells(lig, 2) = TextBoxNom
If .Cells(3, 3) <> "*" Then .Cells(lig, 3) = TextBoxPrenom
If .Cells(3, 4) <> "*" Then .Cells(lig, 4) = TextBoxService
End If
'les textbox en bas sous ListView
If .Cells(3, 5) <> "*" Then .Cells(lig, 5) = TextBoxDernFormation
If .Cells(3, 6) <> "*" Then .Cells(lig, 6) = TextBoxDateLimitRecycl
If .Cells(3, 7) <> "*" Then .Cells(lig, 7) = TextBoxPrevisFormation
If .Cells(3, 8) <> "*" Then .Cells(lig, 8) = TextBoxComment
If .Cells(3, 9) <> "*" Then .Cells(lig, 9) = TextBoxJourRestant
End With
en revanche pour faire la formule en vba sa merdouille un peut une erreur de declaration de variable
j'ai essayer de mettre sa
Code:
Dim F$ As Long
et du coup j'ai eu droit a un autre message d'erreur qui est
erreur de compilation fin d'instruction Attendu
pourais tu me dire stp ce que sa signifie et comment je peut y remedier merci d'avance pour ton aide
Code:
Private Sub ButtonMaJ_Click() ' mise à jour recopi contenu TextBox dans la feuille FormationNo
Dim retMsg As Integer
Application.DisplayAlerts = False
retMsg = MsgBox("La fiche à été mise à jour... Voulez-vous Continuez sur cette fiche ?", vbInformation + vbYesNo, "continuer sur cette fiche?...")
'Si la suppression est confirmée
If retMsg = vbNo Then
Unload Me
UserForm1.Show
End If
If retMsg = vbYes Then
Label20.Visible = True
Label14.Visible = False
Label15.Visible = False
Label16.Visible = False
Label17.Visible = False
Label19.Visible = False
Label21.Visible = False
With Sheets(NomDeLaFeuilFormation)
'les textbox en haut sous ComboBoxBase
If .Cells(lig, 1) = "" Then
If .Cells(3, 1) <> "*" Then .Cells(lig, 1) = TextBoxNoOrdre
If .Cells(3, 2) <> "*" Then .Cells(lig, 2) = TextBoxNom
If .Cells(3, 3) <> "*" Then .Cells(lig, 3) = TextBoxPrenom
If .Cells(3, 4) <> "*" Then .Cells(lig, 4) = TextBoxService
End If
'les textbox en bas sous ListView
If .Cells(3, 5) <> "*" Then .Cells(lig, 5) = TextBoxDernFormation
If .Cells(3, 6) <> "*" Then .Cells(lig, 6) = TextBoxDateLimitRecycl
If .Cells(3, 7) <> "*" Then .Cells(lig, 7) = TextBoxPrevisFormation
If .Cells(3, 8) <> "*" Then .Cells(lig, 8) = TextBoxComment
If .Cells(3, 9) <> "*" Then .Cells(lig, 9) = TextBoxJourRestant
End With
'les textbox en haut sous ComboBoxBase
lig = 0
NomDeLaFeuilFormation = ""
TextBoxDernFormation = ""
TextBoxDateLimitRecycl = ""
TextBoxPrevisFormation = ""
TextBoxComment = ""
TextBoxJourRestant = ""
ButtonMaJ.Visible = False
End If
Dim V$
V$ = ComboBoxBase
ComboBoxBase = ""
ComboBoxBase = V$
'exemple pour coller la formule suivante en F6 "=SI(E6<>"";E6+10;"")
'avec sa colonne no 6 pour F et son No de Ligne
'variable Lig pour no de Ligne et la col testée E . . . ça donne ceci :
F$ = "=SI(E" & lig & "<>" & Chr(34) & Chr(34) & ";E" & lig & "+10;" & Chr(34) & Chr(34) & ")"
.Cells(lig, 6).FormulaLocal = F$
MsgBox "Selectionnez une autre formation"
End Sub
Code:
Option Explicit
Dim Index1 As Long, lig As Long, DernLig As Long, Cellule As Range
Dim NomDeLaFeuilBase As String, NomDeLaFeuilFormation As String
Dim retMsgas As Long
Dim retMsg2 As Long
Dim DblClick As Long
Dim ComboxBase As Long
Dim NoDeCol As Long
Dim F$ As String
ci-joint ta modif !
tu reprends le code et tu supprimes au début ton Dim F$ As Long
Dim F$ > $ signifie chaine de caratères idem Dim F As String
ceci > Dim retMsg As Integer pour retour msgbox
c’est > Dim retMsg As Variant c'est mieux ça peut servir pour d'autres saisies
je vois que tu n’as pas suivi mes conseils concernant la nomination des objets !?
pour t’aider ça devient laborieux !
Franchement je sais pas comment tu fais pour t’y retrouver
avec des objets sans nom et sans commentaire !?
j'ai vu aussi des If en début de Sub avec le End If qui se ballade vers la fin du Sub sans trop savoir le début et la fin du test parmis d'autres !
tout ça parceque le code est entassé pêle-mêle et sans décrochage de lignes
un exemple parmis tant d’autres :
CommandButton4.Visible = True <<< ici il est True
CommandButton8.Visible = True <<<<<<<<<<<<<<<< ça c’est qui/quoi !? on sait pas !?
ButtonCreatNom.Visible = False <<<<<<<<<<<<<<<< ça ok, on c’est quoi !
CommandButton4.Visible = False <<< ici il est False !?
Voir aussi tout au début du code userf ceci : (à moins que ton classeur soit incomplet !)
Dim retMsgas As Long 'ne sert nulle part !
Dim retMsg2 As Long 'ne sert nulle part !
Dim DblClick As Long ' une horreur à supprimer !
Dim ComboxBase As Long ' ne sert nulle part en plus tu as l’objet ComboBoxBase !?!
Dim NoDeCol As Long ' ne sert nulle part de plus NoDeCol As Integer aurait été suffisant
Code:
Private Sub ButtonMaJ_Click() ' mise à jour recopi contenu TextBox dans la feuille FormationNo
Dim retMsg As Variant
Application.DisplayAlerts = False
retMsg = MsgBox("La fiche à été mise à jour... Voulez-vous Continuez sur cette fiche ?", vbInformation + vbYesNo, "continuer sur cette fiche?...")
'Si la suppression est confirmée
If retMsg = vbNo Then Unload Me: UserForm1.Show
'suite ne peut être que vbYes donc If retMsg = vbYes inutile
Label20.Visible = True
Label14.Visible = False
Label15.Visible = False
Label16.Visible = False
Label17.Visible = False
Label19.Visible = False
Label21.Visible = False
With Sheets(NomDeLaFeuilFormation) '---------------------------------------
'les textbox en haut sous ComboBoxBase
If .Cells(Lig, 1) = "" Then
If .Cells(3, "A") <> "*" Then .Cells(Lig, "A") = TextBoxNoOrdre
If .Cells(3, "B") <> "*" Then .Cells(Lig, "B") = TextBoxNom
If .Cells(3, "C") <> "*" Then .Cells(Lig, "C") = TextBoxPrenom
If .Cells(3, "D") <> "*" Then .Cells(Lig, "D") = TextBoxService
End If
'les textbox en bas sous ListView
If .Cells(3, "E") <> "*" Then .Cells(Lig, "E") = TextBoxDernFormation
If .Cells(3, "F") <> "*" Then .Cells(Lig, "F") = TextBoxDateLimitRecycl
If .Cells(3, "G") <> "*" Then .Cells(Lig, "G") = TextBoxPrevisFormation
If .Cells(3, "H") <> "*" Then .Cells(Lig, "H") = TextBoxComment
If .Cells(3, "I") <> "*" Then .Cells(Lig, "I") = TextBoxJourRestant
'les formules en Col(F) et Col(I)
Dim F$
'Col F Exp Lig(5) =SI(E5<>"";E5+10;"")
F$ = "=SI(E" & Lig & "<>" & Chr(34) & Chr(34) & ";E" & Lig & "+10;" & Chr(34) & Chr(34) & ")"
.Cells(Lig, "F").FormulaLocal = F$
'Col I Exp Lig(5) =SI(E5<>"";JOURS360(F5;J5);"")
F$ = "=SI(E" & Lig & "<>" & Chr(34) & Chr(34) & ";JOURS360(F" & Lig & ";J" & Lig & ");" & Chr(34) & Chr(34) & ")"
.Cells(Lig, "I").FormulaLocal = F$
End With '-----------------------------------------------------------------
'les textbox en haut sous ComboBoxBase
Lig = 0
NomDeLaFeuilFormation = ""
TextBoxDernFormation = ""
TextBoxDateLimitRecycl = ""
TextBoxPrevisFormation = ""
TextBoxComment = ""
TextBoxJourRestant = ""
ButtonMaJ.Visible = False
Dim V$
V$ = ComboBoxBase
ComboBoxBase = ""
ComboBoxBase = V$
MsgBox "Selectionnez une autre formation"
End Sub
Re bon jour Roland merci pour tes critique constructive et conseil il est vrais je m'enflame et je travail beaucoup a la bidouille et se qui me semble correct une fois terminée je tenterais faire du rangement mais pour l'instant mon peut experience me conduiras a la catha au moindre modification
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD