Re: gestion de l'insertion de lignes et de la saisie sur ces lignes
#11
Accro XLPages

Inscription: 09/01/2008
De Montréal, Québec

Messages: 461

Système d'exploitation:
PC
Version Excel utilisée:
97 à 2016
Posté le : 18-10-2009 22h53
Bonsoir gmarin,

Je me permets une toute dernière remarque, à vrai dire c'est plus fort que moi.

Citation : «... et ma réflexion liée à mon âge ne me permettent pas d'apréhender nécessairement l'exacte portée du développement...»
J'aimerais citer à contrario Georges Brassens «L'âge ne fait rien à l'affaire, quand on est passionné on est passionné.»

Je vous prie donc, monsieur, de ne pas tenir compte du grand âge que nous partageons.
Je me verrais froissé qu'il en fût autrement.
Nul ne devrait ni ne doit prendre en compte cet aléa du chronomètre, cette supposée et largement surévaluée carence horodatée.
«Les mauvaises réputations sont, plus souvent que les bonnes, surfaites.» Je-ne-sais-plus-qui.

«Ce qui se conçoit bien s'énonce clairement...» Nicolas Boileau 1636-1711.
Bien plus vieux que vous et moi.
Et aussi «
Vingt fois sur le métier remettez votre ouvrage» Idem.

Tout ceci pour dire : poursuivons.

Il y a ici et ailleurs des ressources généreuses qui savent indiquer le tour de main et la manière de procéder.
C'est à la fois un privilège et un honneur de pouvoir apporter ne fusse qu'une simple indication, une façon de faire qui soit indiquée et opératoire en l'occurence. L'âge ne fait rien à l'affaire.

Très cordialement,

Guy




Hors Ligne
Rapport   Haut 

Re: gestion de l'insertion de lignes et de la saisie sur ces lignes
#12
Régulier XLPages

Inscription: 05/10/2009
De 33210-Gironde

Messages: 49

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 19-10-2009 02h02
C'est quand même beau, la langue de Molière et la pensée des philosophes Français quand elles sont exprimées et maniées par nos "cousins" d'outre-altlantique !.

Beatus qui prodest quibus potest

Merci à toi également Guy, j'ai gagné le temps de cette lecture sur le temps qui s'écoule en traversant mon esprit et mon enveloppe charnelle.
Tempora mutantur et nos mutamur in illis 
(Le temps bouge, nous bougeons avec lui)


Cordialement.

GMarin
Hors Ligne
Rapport   Haut 

Re: gestion de l'insertion de lignes et de la saisie sur ces lignes
#13
Régulier XLPages

Inscription: 05/10/2009
De 33210-Gironde

Messages: 49

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 21-10-2009 18h56
Bonjour Didier,

Puis-je solliciter 2 modifications  et quelques conseils ?

GMarin.

Hors Ligne
Rapport   Haut 

Re: gestion de l'insertion de lignes et de la saisie sur ces lignes
#14
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1483

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016
Posté le : 21-10-2009 20h46
Bonsoir gmarin, Guy, le Forum,

gmarin, le site reste bien évidemment à ton écoute.

Cela dit, si la question d'origine du présent fil de discussions est effectivement résolue, peut-être serait-il bienvenu de créer un nouveau sujet pour ta nouvelle demande (et donc de refermer celui-ci en résolu) ?

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: gestion de l'insertion de lignes et de la saisie sur ces lignes
#15
Régulier XLPages

Inscription: 05/10/2009
De 33210-Gironde

Messages: 49

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 21-10-2009 21h04
Bonsoir Didier,

C'est en rapport avec le sujet de ce fil.

- Les combobox qui scrutent la liste des lieux renvoient les N° de colonne, et j'aurais voulu mettre des noms à la place. (ex : PAris, Marseille, Lyon, etc...), mais c'est bien les N° qui remontent, pas les "textes" des lieux.

- Le contrôle cohérent de la saisie fonctionne bien pour les "8 modèles maxi par lieu", mais seulement dans l'UserForm.
Comme l'utilisateur final peut intervenir dans la zone non verrouillée pour modifier ou ajouter un modèle à un lieu, ponctuellement en dehors d'une insertion de ligne, le contrôle n'existe pas à ce niveau.

- Est-ce que je peux changer le texte des "labels" sans risque de perturber le code ?

Merci.
Hors Ligne
Rapport   Haut 

Re: gestion de l'insertion de lignes et de la saisie sur ces lignes
#16
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1483

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016
Posté le : 21-10-2009 21h23
Re,

Citation :
gmarin a écrit :
- Les combobox qui scrutent la liste des lieux renvoient les N° de colonne, et j'aurais voulu mettre des noms à la place. (ex : PAris, Marseille, Lyon, etc...), mais c'est bien les N° qui remontent, pas les "textes" des lieux.

Les "textes" des lieux apparaitront-il sur la feuille de calcul en ligne 3, à partir de la colonne D (et donc en lieu et place des chiffres que tu faisais apparaître à cette même place dans ton exemple) ?

Citation :
gmarin a écrit :
- Le contrôle cohérent de la saisie fonctionne bien pour les "8 modèles maxi par lieu", mais seulement dans l'UserForm.
Comme l'utilisateur final peut intervenir dans la zone non verrouillée pour modifier ou ajouter un modèle à un lieu, ponctuellement en dehors d'une insertion de ligne, le contrôle n'existe pas à ce niveau.

Je vais regarder ce qu'on peut faire (quand j'aurai réponse à la première question).

Citation :
gmarin a écrit :
- Est-ce que je peux changer le texte des "labels" sans risque de perturber le code ?

A priori, tu peux modifier comme tu veux le texte des contrôles "Label" du Userform. Ils n'interviennent pas pour le fonctionnement du code.

Cordialement,


Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: gestion de l'insertion de lignes et de la saisie sur ces lignes
#17
Régulier XLPages

Inscription: 05/10/2009
De 33210-Gironde

Messages: 49

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 21-10-2009 23h21
Oui Didier,

Les "textes" (nom des lieux) remplaceront les N° de la ligne 3, à partir de la colonne D (dans le projet en cours, il y en a 45 actuellement..).

Ok pour les textes des labels.
Hors Ligne
Rapport   Haut 

Re: gestion de l'insertion de lignes et de la saisie sur ces lignes
#18
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1483

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016
Posté le : 22-10-2009 00h33
Re,

Tu trouveras dans le fichier joint, les modifications demandées.

DANS LE MODULE DE CODE DE LA FEUILLE "cars" : une procédure évènementielle est ajoutée pour contrôler la saisie directe sur feuille
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range
    If Target.Count > 1 Then Exit Sub   'ne gère pas les sélections de plage
    Set Plage = vPlage
    With Application
        If Not .Intersect(Target, Plage.Offset(0, 3).Resize(, Plage.Columns.Count - 3)) Is Nothing Then
            If .CountA(Plage.Columns(Target.Column)) > 8 Then
                MsgBox "Déjà 8 modèles pour ce lieu !"
                .Undo
            End If
        End If
    End With
End Sub

DANS LE MODULE DE CODE STANDARD mDF : une nouvelle fonction personnalisée est ajoutée
Function vPlage() As Range
Dim L As Long
Dim C As Integer
    With Sheets("cars")
        C = .Cells(3, .Columns.Count).End(xlToLeft).Column  'nbre de colonnes maxi
        L = .Cells(.Rows.Count, 1).End(xlUp).Row            'nbre de lignes maxi
        Set vPlage = .Range(.Cells(5, 1), .Cells(L, C))
    End With
End Function

LE MODULE DE CODE DU USERFORM est également modifié comme suit :
Option Explicit
'--------------------------------------------------------------------------
' Auteur    : Didier FOURGEOT (myDearFriend!)  -  www.mdf-xlpages.com
' Date      : 22/10/2009
'--------------------------------------------------------------------------
Private Sub UserForm_Initialize()
Dim maxCol As Integer
Dim C As Byte, i As Byte
    'Détermination du nombre de lieux maxi
    maxCol = vPlage.Columns.Count
    'Chargement des ComboBox correspondantes
    For C = 1 To 5
        With Controls("cboLieu" & C)
            .ColumnCount = 2
            .BoundColumn = 2
            .ColumnWidths = ";0"
            For i = 1 To maxCol - 3
                .AddItem Sheets("cars").Cells(3, i + 3).Text
                .List(.ListCount - 1, 1) = i
            Next i
        End With
    Next C
End Sub

Private Sub btnParcourir1_Click()
    Parcourir txtLien1
End Sub

Private Sub btnParcourir2_Click()
    Parcourir txtLien2
End Sub

Private Sub btnParcourir3_Click()
    Parcourir txtLien3
End Sub

Private Sub btnParcourir4_Click()
    Parcourir txtLien4
End Sub

Private Sub btnParcourir5_Click()
    Parcourir txtLien5
End Sub

Private Sub Parcourir(Ctrl As Control)
Dim Chemin As Variant
    Chemin = Application.GetOpenFilename("Fichier image (*.bmp; *.jpg; *.gif; *.png),*.bmp;*.jpg;*.gif;*.png", , "Choisir fichier image...")
    If Not Chemin = False Then
        Ctrl.Text = Chemin
    End If
End Sub

Private Sub btnInserer_Click()
Dim Ctrl As Control
Dim i As Byte, N As Byte
Dim Ok As Boolean
    'Contrôle la cohérence de la saisie
    If txtModele.Text = "" Then Exit Sub
    For i = 1 To 5
        If Controls("cboLieu" & i).ListIndex > -1 And Controls("txtLieu" & i).Text <> "" And Controls("txtlien" & i).Text <> "" Then
            N = Controls("cboLieu" & i).ListIndex
            '8 modèles maximum par lieu
            If Sheets("cars").Cells(2, 4 + N) > 7 Then
                MsgBox "Le lieu " & Controls("cboLieu" & i).Text & " contient déjà 8 modèles !"
                Ok = False
                Exit For
            Else
                Ok = True
            End If
        End If
    Next i
    If Ok Then
        With Sheets("cars")
            'Créer nouvelle ligne
            .Rows("10").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            'Recopier les formules en A et B
            .Range(.Cells(9, 1), .Cells(9, 2)).Copy
            .Range(.Cells(10, 1), .Cells(10, 2)).PasteSpecial Paste:=xlPasteFormulas
            Application.CutCopyMode = False
            'Insérer les données
            .Cells(10, 3).Value = txtModele
            InsereLien cboLieu1.ListIndex, txtLien1, txtLieu1
            InsereLien cboLieu2.ListIndex, txtLien2, txtLieu2
            InsereLien cboLieu3.ListIndex, txtLien3, txtLieu3
            InsereLien cboLieu4.ListIndex, txtLien4, txtLieu4
            InsereLien cboLieu5.ListIndex, txtLien5, txtLieu5
        End With
        'RAZ formulaire (préparation pour saisie "de masse")
        For Each Ctrl In Me.Controls
            Select Case TypeName(Ctrl)
            Case "TextBox"
                Ctrl.Text = ""
            Case "ComboBox"
                Ctrl.ListIndex = -1
            End Select
        Next Ctrl
    End If
End Sub

Private Sub InsereLien(Id As Integer, Lien As String, Titre As String)
'Insère le lien dans la feuille
Dim R As Range
    If Id < 0 Or Lien = "" Or Titre = "" Then Exit Sub
    With Sheets("cars")
        Set R = .Cells(10, 4 + Id)
        .Hyperlinks.Add Anchor:=R, Address:=Lien
        R.Hyperlinks(1).TextToDisplay = Titre
    End With
End Sub

Private Sub btnFin_Click()
Dim Plage As Range
Dim L As Long
    'Trier la base
    Application.ScreenUpdating = False
    With Sheets("cars")
        Set Plage = vPlage
        Plage.Sort Key1:=.Range("C5"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    End With
    Application.ScreenUpdating = True
    'Fermer le formulaire
    Unload Me
    'Enregistrer sous...
    Application.Dialogs(xlDialogSaveAs).Show
End Sub

Private Sub btnAnnuler_Click()
    Unload Me
End Sub

J'en ai profité pour modifier notamment un problème du code précédent que je n'avais pas vu : la plage triée était limitée (à tort) à la colonne H. C'est rectifié maintenant.

Cordialement,
Pièce jointe:
zip PourGmarin3.zip   [ Taille: 35.08 Ko - Téléchargements: 217 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: gestion de l'insertion de lignes et de la saisie sur ces lignes
#19
Régulier XLPages

Inscription: 05/10/2009
De 33210-Gironde

Messages: 49

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 23-10-2009 01h27
Bonsoir Didier,

juste un soucis de hauteur de ligne correcte non reportée à l'insertion, la ligne insérée est à la hauteur par défaut (15), alors que la hauteur est moindre pour toutes les lignes (12.75).
C'est pas vital, mais si on pouvait .... 

Autrement tout est OK.
Cà liste, çà insère, çà trie .... bref heureux .....
Je vais pouvoir me concentrer sur l'étape suivante ...

Merci encore.


Gmarin

EDIT : 05:35

Erreur d'analyse
! Ce n'est pas la ligne qui est trop haute, c'est la police qui est "calibri 11" au lieu de "calibri 10" comme sur le reste de mon document, mais çà, j'ai encore oublié de le préciser ....

Edité par gmarin le 23/10/2009 05:40:22
Hors Ligne
Rapport   Haut 

Re: gestion de l'insertion de lignes et de la saisie sur ces lignes
#20
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1483

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016
Posté le : 23-10-2009 20h21
Bonsoir gmarin, le Forum,

Pour ma part, je ne rencontre pas le problème que tu indiques. Cela dit, il me semble que Calibri 11 est la police par défaut sur XL2007, aussi, il n'est peut être pas étonnant que cette taille de police 11 soit reprise par défaut lorsque tu insères une nouvelle ligne... et là, ce n'est peut être plus un problème de traitement automatisé, mais un problème de choix entre les paramètres Excel (accessibles via les options du tableur) et choix de conception pour le document.

Cela dit, pour couper court, tu trouveras en pièce jointe une autre façon d'insérer la ligne, contournant ainsi ce problème.

La procédure d'insertion de ligne devient maintenant celle-ci :
Private Sub btnInserer_Click()
Dim Ctrl As Control
Dim i As Byte, N As Byte
Dim Ok As Boolean
    'Contrôle la cohérence de la saisie
    If txtModele.Text = "" Then Exit Sub
    For i = 1 To 5
        If Controls("cboLieu" & i).ListIndex > -1 And Controls("txtLieu" & i).Text <> "" And Controls("txtlien" & i).Text <> "" Then
            N = Controls("cboLieu" & i).ListIndex
            '8 modèles maximum par lieu
            If Sheets("cars").Cells(2, 4 + N) > 7 Then
                MsgBox "Le lieu " & Controls("cboLieu" & i).Text & " contient déjà 8 modèles !"
                Ok = False
                Exit For
            Else
                Ok = True
            End If
        End If
    Next i
    If Ok Then
        With Sheets("cars")
            'Créer nouvelle ligne
            .Rows(10).Copy
            .Rows(10).Insert shift:=xlDown
            .Rows(10).Range("C1:IV1").ClearContents
            'Insérer les données
            .Cells(10, 3).Value = txtModele
            InsereLien cboLieu1.ListIndex, txtLien1, txtLieu1
            InsereLien cboLieu2.ListIndex, txtLien2, txtLieu2
            InsereLien cboLieu3.ListIndex, txtLien3, txtLieu3
            InsereLien cboLieu4.ListIndex, txtLien4, txtLieu4
            InsereLien cboLieu5.ListIndex, txtLien5, txtLieu5
        End With
        'RAZ formulaire (préparation pour saisie "de masse")
        For Each Ctrl In Me.Controls
            Select Case TypeName(Ctrl)
            Case "TextBox"
                Ctrl.Text = ""
            Case "ComboBox"
                Ctrl.ListIndex = -1
            End Select
        Next Ctrl
    End If
End Sub

Voilà gmarin, c'est pour ma part, ma dernière intervention dans ce fil. Je te souhaite une bonne continuation dans ton projet.

Cordialement,
Pièce jointe:
zip PourGmarin4.zip   [ Taille: 36.40 Ko - Téléchargements: 227 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes