Programmation VBA

bonjour,

Le fichier excel en pièce jointe est un futur outil de travail dans mon entreprise, j'ai besoin d'une personne compétente pour programmer les deux ou trois choses qui restent.

j'ai mis dans ce fichier mes demandes

merci d'avance

Salut David,

devrait pas être loin de ce que tu attends.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tTab, iRow%
'
Application.EnableEvents = False
Cancel = True
'
If Not Intersect(Target, [A1]) Is Nothing Then _
    Range("A3:G3").Value = "": _
    Range("A7:A26").Value = ""
'
If Not Intersect(Target, Range("A7:C24")) Is Nothing Then _
    iRow = Target.Row: _
    Range("A" & iRow).Value = "": _
    If iRow < 24 Then _
        tTab = Range("A" & iRow + 1).Resize(24 - iRow, 1).Value: _
        Range("A" & iRow + 1).Resize(24 - iRow, 1).Value = "": _
        Range("A" & iRow).Resize(24 - iRow, 1).Value = tTab: _
'
Application.EnableEvents = True
'
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
'
Application.EnableEvents = False
'
If Not Intersect(Target, [E3]) Is Nothing Then _
    If Target <> "" Then _
        Range("A" & IIf([A7] = "", 7, Range("A6").End(xlDown).Row + 1)).Value = _
            [B3] & IIf([E3] = "Vidange circuit de refroidissement", " " & [C3], "") & " " & [E3]
'
Application.EnableEvents = True
'
End Sub


A+

bonjour,

tout d'abord merci pour votre aide.

il y a encore des choses à modifier, peut être parce que je n'ai pas été très explicite par écrit ce n'est pas toujours simple ☺

j'ai mis dans le nouveau fichier mes demandes

on pourra éventuellement s'appeler si c'est possible pour vous , moi ça ne me pose aucun problème.

bon courage

Salut David,

ton fichier modifié selon tes souhaits

- clic simple en [A1] : mon habitude pour les clics à effet radical est de protéger les données derrière un double-clic ;
- logique de ne pas vouloir sélectionner deux fois le même travail ;

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim rCel As Range, sData$
'
Application.EnableEvents = False
'
If Not Intersect(Target, Range("E3")) Is Nothing Then
    sData = Range("E3").Value
    If sData <> "" Then
        On Error Resume Next
        Set rCel = Columns(1).Find(what:=sData, lookat:=xlPart, LookIn:=xlValues)
        If rCel Is Nothing Then
            Range("A" & IIf([A7] = "", 7, Range("A6").End(xlDown).Row + 1)).Value = _
                [B3] & IIf([E3] = "Vidange circuit hydraulique", " " & [C3], "") & " " & [E3]
        End If
        On Error GoTo 0
    End If
End If
'
Application.EnableEvents = True
'
End Sub

- laisser les formules = pas possible sinon, faisant référence à [E3], elles se recalculeraient à chaque changement de valeur en [E3] !
Pas ce que tu veux, j'imagine ?
- j'ai corrigé la construction du libellé en [A:A] en faisant intervenir l'hydraulique plutôt que le refroidissement

[B3] & IIf([E3] = "Vidange circuit hydraulique", " " & [C3], "") & " " & [E3]


A+

Salut Curulis57,

excellent travail merci beaucoup !

juste une dernière petite chose, peux tu me dire comment protéger toutes mes cellules liées à une formule ou une macro ?

lorsque je le fais comme d'habitude via ma protection de feuille ça beug et ne fonctionne plus correctement.

seule la ligne 3 et les cellules C4 et E4 doivent être disponibles pour mes gars, tout le reste doit être bloqué
il faut juste que je comprenne la méthode si j'ai à faire des modifications à apporter

après ça , je ne te dérange normalement plus et ne manquerais pas de bien noté ta prestation ☺

merci

Salut David,

petits add-on...

Pour le confort,
- en [F3], si "Chez le client", [G3] = vide et le curseur se place en [G3] ;
- en [F3], si "A la concession", [G3] = 0

Pour la protection, j'ai opté pour une procédure facile pour toi mais à compliquer sur demande.
- un double-clic en [E2] "Travaux" bascule la protection comme demandée ON/OFF ;
- ON : [A1] est vert et les cellules inaccessibles ;
- OFF : [A1] est rouge (couleur du danger) : tout est accessible.

Public Sub ProtectCells(ByVal iIdx%)
'
If iIdx = 0 Then
    Cells.Locked = False
    Worksheets("Calculateur 1").Unprotect
Else
    Cells.Locked = True
    Union(Range("A1"), Range("C4"), Range("E2:E4"), Range("A3:G3")).Locked = False
    Worksheets("Calculateur 1").Protect UserInterfaceOnly:=True
End If
'
End Sub


A+

12davidpro.xlsm (71.32 Ko)

salut!

c'est nickel merci

juste un petit détail, lorsque je suis en vert donc verrouillé, tout fonctionne bien sauf le doubleclic sur mes lignes de travaux sélectionnés pour pouvoir en éliminer une sans tout effacer.

il serait judicieux également que lorsque je change de série en A3 , B3 et C3 s'effacent, lorsque je change de modèle en B3 , C3 s'efface

Salut David,

effectivement, il y avait encore quelques trucs qui n'allaient pas et ceci, aussi, que tu devrais trancher : quid des données Travaux déjà définis en [A7:A23] lorsque tu changes de série, modèle ou boîte ?
Théoriquement, à mon sens, il faudrait tout effacer et recommencer la fiche, non ?
D'autant que le type de réservoir hydraulique pourrait, lui aussi, être affecté par ce(s) changement(s)...

J'ai apporté quelques améliorations de confort, à savoir :
- le passage automatique d'une cellule à l'autre lors de la première édition des données en ligne 3 ;
- un avertissement de fiche-client incomplète obligeant à terminer cet encodage pour accéder à [E3] ;
- un avertissement lorsqu'on essaye de compléter une donnée "Modèle" ou "Boîte" alors que la donnée précédente est vide.

J'ai dû "libérer" [G4] en mode protégé. En validant [G3] en mode protégé, la sélection (avec [G4].Locked) partait sur [A1] et procédait à l'effacement du tableau.
J'ai évidemment ajouté une commande qui envoie la sélection en [E3] si on essaie d'accéder à [G4].

If Not Intersect(Target, [G4]) Is Nothing Then [E3].Select

J'espère, cette fois-ci, qu'on est dans le bon...


A+

12davidpro.xlsm (75.05 Ko)

oui on est dans le bon

excellent travail !

par contre tu as raison, lorsqu' il y a des travaux déjà choisis en A7:A23, si on touche à la série, au modèle ou type de boite ça doit remettre à zéro pour éviter des erreurs.

pour le réservoir ce n'est pas la peine c'est le même forfait pour toutes les machines

on est tout près de la perfection !

Re,

12davidpro.xlsm (75.27 Ko)


A+

Salut,

c'est parfait à 99.9%

juste que je ne peux pas supprimer une ligne dans les travaux choisis, ça affiche un beug dans la programmation.

merci

Salut David,

je viens d'utiliser le fichier que je t'ai envoyé, en passant à la volée du statut "protégé" à "libre", sans rencontrer le problème décrit !!
Envoie-moi l'intitulé et le libellé de l'erreur...


A+

bonjour,
lorsque je double clic sur une ligne pour la supprimer voici le problème affiché.

merci de ton aide

beug 1

Salut David,

j'ai trouvé une solution... qui me paraît bizarre à devoir effectuer mais, bon, ça fonctionne...
J'ai constaté la même erreur, effectivement, en ouvrant le fichier qui avait été fermé en mode protégé.

J'ai donc ajouté une déprotection du fichier à la fermeture de celui-ci et un test à l'ouverture en fonction de la couleur de [A1] pour protéger ou non la feuille.

Devrait aller, cette fois !


A+

16davidpro.xlsm (75.65 Ko)

bonjour,

tout est parfait !

je tiens vraiment à te remercier pour ton aide, et même tes conseils, tu as fait vraiment du super boulot.

je vais présenter cet outil à mes équipes à leur retour de congés

peux tu me dire à quel endroit je dois noter ou mettre mes appréciations ? j'y tiens vraiment !

Salut David,

excellent ! Tant mieux !
Cela dit, si tu as besoin d'une amélioration, correction ou autre, il suffit de demander.

Pour l'appréciation, tu l'as déjà fait en "votant" un point positif.
Pour ce job et les suivants que tu posteras, tu dois voter en bas à droite des posts pertinents qui t'ont aidé à résoudre ton problème.

Bon travail à toi et tes équipes !

A+

bonjour,

j'espère que tu vas bien depuis la dernière fois!

tu as fait de l'excellent boulot, j'ai un petit beug sur le fichier à l'ouverture, serait il possible de me corriger ça s'il te plait ?

merci d'avance pour ton aide

beug
Rechercher des sujets similaires à "programmation vba"