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 :

Comment ajouter une ligne dans une feuille ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 262
    Points : 133
    Points
    133
    Par défaut Comment ajouter une ligne dans une feuille ?
    Comment ajouter une ligne dans une feuille ,avant ou après ligne specifique

    La Faq me donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub AjouteLigneTableau()
        Dim ListObj As ListObject
        Dim i As Integer
     
        'Définit le tableau dans la feuille de calcul
        Set ListObj = Worksheets("Feuil1").ListObjects("Table1")
        'Ajoute une ligne
        ListObj.ListRows.Add
    End Sub
    Sauf que ça ne marche pas . je veux inserer ma ligne après la ligne 20, ou après la ligne 51 par exemple.

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 349
    Points
    34 349
    Par défaut
    bonjour déjà
    que veux-tu dire par "ne marche pas" stp ?
    le macro recorder devrait te donner un code qui tourne

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 262
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    bonjour déjà
    que veux-tu dire par "ne marche pas" stp ?
    le macro recorder devrait te donner un code qui tourne
    La macro ne fait pas ce que je veux.

    Au fait, je cherche à inserer une ligne au milieu des autres lignes déjà existantes. Pour ce code je recois la message d'erreur 9 : l'indice n'appartient pas à la selection.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 349
    Points
    34 349
    Par défaut
    hum...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 12/11/2007 par JPChececk
    '
     
    '
        Rows("3:3").Select
        Selection.Insert Shift:=xlDown
    End Sub
    en utilisant ca, tu devrais trouver ton bonheur il me semble, OK ?

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 262
    Points : 133
    Points
    133
    Par défaut
    Bonjour jpcheck;
    Es ce que je peux écrire : Par exemple

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 349
    Points
    34 349
    Par défaut
    bonjour,
    pourquoi cette question si "3:3" est la bonne syntaxe ? Tu passes par des boucles ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i =3 to 5
    Rows(i & ":" & i).Select
    Next i
    devrait te suffire, non ?

  7. #7
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 262
    Points : 133
    Points
    133
    Par défaut
    En éffet le code se trouve dans UserForm4 et le classeur dont je manipule les données est la feuil1.

    Es ce que Rows est une proprièté de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WorkSheets("Feuil1") ?
    est ce que je peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    WorkSheets("Feuil1").Rows(i & ":" & j
    WorkSheets("Feuil1")..Selection.Insert Shift:=xlDown)
    Merci jpcheck

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 349
    Points
    34 349
    Par défaut
    as-tu essayé ?

  9. #9
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 262
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    as-tu essayé ?
    la ligne est bien selectionnée.

    Pour :

    WorkSheets("Feuil1").Selection.Insert Shift:=xlDown

    J'ai le message
    Proprièté ou méthode non geréé par cet objet


    je t'explique ce que je veux faire en tout.

    j'ai une colonne contenant ces données:

    A
    A
    A
    B
    B
    B
    C
    C
    C
    D
    D
    D

    mon programme doit lire toute la colonne .
    Si la ligne suivante contient une valeur differente que la ligne precedente ajouter une nouvelle.

    faire la meme chose jusqu'à ce que le programme rencontre une cellule vierge.

    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
     
    Sub test()
    Dim valeur as String
    Dim i As Integer
    Dim j As Integer
    Dim p As Integer
     
    Do 
    ' la premère contient le titre de la colonne d'ou un pas de : 2+p
    ' il s'agit de la colonne 8 d'ou Cells(2 + p, 8).
    valeur = Worksheets("Feuil1").Cells(2 + p, 8).value
     
     
    if Worksheets("Feuil1").Cells(3 + p, 8).value <> valeur then
    'insertion de la nouvelle
    i=3 + p
    j=8
    Worksheets("Feuil1").Rows(j & ":" & t).Select
     Selection.Insert Shift:=xlDown
    End If
    p=p+1
    Loop while response=0
     
    End sub
    J'arrive à inserer mais pas comme je le souhaite.

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 349
    Points
    34 349
    Par défaut
    encore faut-il que i=j, tu n'insère une ligne qu'après ou qu'avant une autre, pas la peine d'en avoir 5, seule la première/dernière compte je crois.

  11. #11
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 262
    Points : 133
    Points
    133
    Par défaut
    Rows(i & ":" & j)

    Que represente i et j dans cette formule ?

  12. #12
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 349
    Points
    34 349
    Par défaut
    euh, dans ton code, tu n'utilises pas la varaible i, ni la variable t, qui prend une valeur ou pas ?

  13. #13
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 262
    Points : 133
    Points
    133
    Par défaut
    Corrige moi si c'est faux:
    Je pensais que Rows(i & ":" & j)
    i= la ligne
    j= la colonne

    c'est là que je vois flou

    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
     
     
    Sub guide()
     
    Dim valeur As String
    Dim i As Integer
    Dim j As Integer
    Dim p As Integer
    Dim response As Integer
     
    Do
    ' la premère contient le titre de la colonne d'ou un pas de : 2+p
    ' il s'agit de la colonne 8 d'ou Cells(2 + p, 8).
    valeur = Worksheets("Feuil3").Cells(2 + p, 8).value
    MsgBox valeur
     
    If Worksheets("Feuil3").Cells(3 + p, 8).value <> valeur Then
    'insertion de la nouvelle
    i = 3 + p
    j = 8
    Worksheets("Feuil3").Rows(i & ":" & j).Select
     Selection.Insert Shift:=xlDown
    End If
     
     
    If Worksheets("Feuil3").Cells(3 + p, 8).value = "" Then response = 1
    p = p + 1
    Loop While response = 0
     
    End Sub

  14. #14
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 349
    Points
    34 349
    Par défaut
    et non,
    si i = ligne et j= colonne alors est ta celulle,
    ici si tu veux avoir la ligne complète, il faut

  15. #15
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    ici si tu veux avoir la ligne complète, il faut
    est suffisant.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  2. [MySQL] Comment insérer 6 lignes en une fois dans une base mysql avec du PHP ?
    Par Alexandrebox dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/02/2008, 14h39
  3. Réponses: 3
    Dernier message: 29/01/2008, 12h08
  4. Réponses: 1
    Dernier message: 10/02/2007, 09h39
  5. Réponses: 1
    Dernier message: 19/05/2006, 17h33

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