IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Insérer une ligne en fonction du numéro de la semaine [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    apprenti Ingénieur
    Inscrit en
    Janvier 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : apprenti Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2018
    Messages : 22
    Points : 18
    Points
    18
    Par défaut Insérer une ligne en fonction du numéro de la semaine
    Bonjour à tous,

    Je débute en VBA et j'ai un problème qui en plus de me prendre beaucoup de temps à résoudre commence un chouilla trois fois rien à m'énerver.

    Je m'explique : je cherche à automatiser un planning sur lequel ce trouve une d'armoire électrique a fournir toute les semaine, j'ai donc commencer par créer un UserForm pour remplir ma ligne, tout marche à l’exception que je n'arrive pas a programmer l'insertion d'une nouvelle ligne a la bonne place dans le planning, elle se colle à la place d'une autre et pas au bonne endroit.......


    Merci d'avance

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Arkops Voir le message
    Voici le début de programme que j'ai fait :
    https://www.developpez.net/forums/d8...s-discussions/

    Pour l'insertion de ligne : https://msdn.microsoft.com/fr-fr/lib.../ff840310.aspx
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Si tu avais mis le code dans ta demande on pourrais peut-être t'aider !!!

    A lire : fichier joint
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  4. #4
    Membre à l'essai
    Homme Profil pro
    apprenti Ingénieur
    Inscrit en
    Janvier 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : apprenti Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2018
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Oups désolé, je pensais avoir mis le fichier. Bien entendu je cherche pas une réponse toute faite mais une piste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub CommandButton1_Click()
        Dim L As Integer
     
     
        If MsgBox("Confirmer l'ajout d'un  nouveau poste?", vbYesNo) = vbYes Then
            With Worksheets("DIAPASON 2018")
               L = .Range("a" & Rows.Count).End(xlUp).Rows + 1
     
     
                .Rows("3").Copy
                .Rows(L).PasteSpecial
                .Range("A3:AB" & L).Sort key1:=.Range("A3"), order1:=xlAscending, Header:=xlNo
           End With
     
     
     
        Range("A" & L).Value = ComboBox2
        Range("B" & L).Value = TextBox1
        Range("D" & L).Value = ComboBox1
        Range("F" & L).Value = ComboBox3
        Range("C" & L).Value = TextBox2
        Range("H" & L).Value = TextBox3
        Range("Y" & L).Value = ComboBox5
        Range("Z" & L).Value = ComboBox6
        Range("AA" & L).Value = ComboBox4
        End If

  5. #5
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Bonjour,

    Si tu avais mis le code dans ta demande on pourrais peut-être t'aider !!!

    A lire : fichier joint
    Citation Envoyé par Arkops Voir le message
    Oups désolé, je pensais avoir mis le fichier. Bien entendu je cherche pas une réponse toute faite mais une piste
    Le fichier, il y était et il y est encore, mais tu n'a probablement pas bien lu ceci : fichier joint

    i.e : Cette possibilité doit être utilisée en dernier recours, lorsque les explications fournies dans un français correct et les réponses y apportées n’ont pas permis de résoudre le problème.
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  6. #6
    Membre à l'essai
    Homme Profil pro
    apprenti Ingénieur
    Inscrit en
    Janvier 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : apprenti Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2018
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Boujour Patrice740 j'ai modifié mes deux messages, désolé pour cette erreur.

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Re,

    Essaies :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Private Sub CommandButton1_Click()
    Dim L As Integer
     
    If MsgBox("Confirmer l'ajout d'un nouveau poste?", vbYesNo) = vbYes Then
    With Worksheets("DIAPASON 2018")
      'RE-EDIT (suite remarque de unparia), remplacer :
      'L = .Range("a" & Rows.Count).End(xlUp).Rows + 1
      ' par :
      L = .Range("a" & Rows.Count).End(xlUp).Row + 1
      .Rows("3").Copy .Rows(L)
      .Range("A" & L).Value = ComboBox2
      .Range("B" & L).Value = TextBox1
      .Range("D" & L).Value = ComboBox1
      .Range("F" & L).Value = ComboBox3
      .Range("C" & L).Value = TextBox2
      .Range("H" & L).Value = TextBox3
      .Range("Y" & L).Value = ComboBox5
      .Range("Z" & L).Value = ComboBox6
      .Range("AA" & L).Value = ComboBox4
      .Range("A3:AB" & L).Sort key1:=.Range("A3"), order1:=xlAscending, Header:=xlNo
    End With
     
    End If
    EDIT : remplaces Integer par Long
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  8. #8
    Membre à l'essai
    Homme Profil pro
    apprenti Ingénieur
    Inscrit en
    Janvier 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : apprenti Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2018
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Re,

    Le programme me change la ligne 5 en écrasant ce qu'il y a à la place. comme avant la modif que tu m'as conseillé....
    j'ai l'impression qu'il y a un probleme entre la ligne de définition de la ligne, et celle d'insertion.

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Si tu veux mon aide, commence donc s'il te plait par mettre ici un copié/collé rigoureux du code écrit sur ta machine. C'est là la moindre des choses lorsque l'on dit qu'un code ne fonctionne pas bien (je ne cesserai jamais d'insister sur ce point).
    Le code que tu as montré n'est pas un copié/collé rigoureux de celui écrit.
    J'en veux pour preuve cette ligne de code, déjà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L = .Range("a" & Rows.Count).End(xlUp).Rows + 1
    Qui aurait déclenché forcément une erreur et non un "écrasement"
    Alors ?
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  10. #10
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Dans ton code, remplace :
    Par
    Pour les explications, voir mon premier message.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  11. #11
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour Menhir
    As-tu lu mon message précédent ?
    Son L est bien mal en point, dans son "code" (enfin : celui qu'il montre ...)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  12. #12
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Effectivement, je n'avais pas vu ce pluriel inopportun.

    En regardant de plus près ce code, j'ai du mal aussi à comprendre l'intérêt de faire un Insert après la dernière ligne et pourquoi une simple copie ne suffit pas.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  13. #13
    Membre à l'essai
    Homme Profil pro
    apprenti Ingénieur
    Inscrit en
    Janvier 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : apprenti Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2018
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Bonjour,

    Désolé pour le retard de ma réponse. Je met dans ce message mon code complet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    'Bouton Ajouter POSTE'
    Private Sub CommandButton1_Click()
        Dim L As Long
     
       If MsgBox("Confirmer l'ajout d'un nouveau poste?", vbYesNo) = vbYes Then
    With Worksheets("DIAPASON 2018")
      L = .Range("a" & Rows.Count).End(xlUp).Rows + 1
      .Rows("3").Copy .Rows(L)
      .Range("A" & L).Value = ComboBox2
      .Range("B" & L).Value = TextBox1
      .Range("D" & L).Value = ComboBox1
      .Range("F" & L).Value = ComboBox3
      .Range("C" & L).Value = TextBox2
      .Range("H" & L).Value = TextBox3
      .Range("Y" & L).Value = ComboBox5
      .Range("Z" & L).Value = ComboBox6
      .Range("AA" & L).Value = ComboBox4
      .Range("A3:AB" & L).Sort key1:=.Range("A3"), order1:=xlAscending, Header:=xlNo
    End With
     
    End If
    End Sub
     
     
    Private Sub UserForm_Initialize()
     
        ComboBox1.List = Array("TVS", "TRM", "TCA", "TNE")
        ComboBox2.List = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52)
        ComboBox3.List = Array("Mr.DUPUIS", "Mr.BACHIRI", "Mr.ROUSSEL", "Mr.MOUZON", "Mr.BABIN", "Mr.LAMBERT")
        ComboBox4.List = Array("ARMOIRE", "COFFRET", "CABINE", "PLATINE")
        ComboBox5.List = Array("TBOX", "CELLO6", "TAIGA")
        ComboBox6.List = Array("CDV15", "CORUS", "ENVOL")
    End Sub
     
    Private Sub CommandButton2_Click()
     
        Unload UserForm1
     
    End Sub
    Si j'ai bien comprit j'ai une ligne de recherche en trop il vaut mieux que je recherche un ligne avec ma bonne semaine et ensuite insérer une ligne juste après.

    Merci d'avance

  14. #14
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Arkops Voir le message
    il vaut mieux que je recherche un ligne avec ma bonne semaine et ensuite insérer une ligne juste après.
    Il faudrait surtout que tu lisses les messages qui te sont adressés.
    A la vue de ce code, on a vraiment l'impression qu'on perd son temps à essayer de t'aider...
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  15. #15
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Salut !

    Citation Envoyé par Menhir Voir le message
    tu lisses
    Là aussi il y a encore un s en trop ‼


    ___________________________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  16. #16
    Membre à l'essai
    Homme Profil pro
    apprenti Ingénieur
    Inscrit en
    Janvier 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : apprenti Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2018
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Désolé je n'y connais pas grand chose en VBA et j'avais pas vu le changement dans un de vos messages Menhir, maintenant ça marche Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Insérer une ligne en fonction de sa date
    Par pepsister dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/09/2015, 15h58
  2. [XL-2010] insérer une ligne en fonction d'un critère défini
    Par quentin22breizh dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/10/2012, 12h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo