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 :

ajout dynamique de ligne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : Juin 2009
    Messages : 58
    Par défaut ajout dynamique de ligne
    Bonjour,
    aidez moi à rectifier ce code.
    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
    ....................................................................
    Dim tot As Worksheet.Cells
    'déclaration de tot en tanque céllule
    ........................................................
    Sub Newline()
    Dim test As Boolean
    Set tot = Cells(11, 4)
    'affectation de tot à la cellule D11
    If tot Is Nothing Then test = True
    If test = False Then
    vbneuwline
    'ajout de nouvelle ligne
    tot = Cells(tot.lin + 1, 4)
    'affectation de tot à la cellule du même colonne et de la ligne suivante
    End If
    End Sub
    merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour thugelife,

    il faudrait que tu en dise un peut plus sur ce que tu souhaite faire ?

    "Dim tot As Worksheet.Cells" ceci signifie que la variable tot contien toutes la collection de cellules de la feuille active.
    Ce ne serait pas plutôt "Dim tot As Range" que tu voudrais ? car dans ce cas, tot peut représenter une cellule ou plusieurs.

    En attendant plus de précisions.

    Hervé.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : Juin 2009
    Messages : 58
    Par défaut
    merci Theze j'ai rectifier.

  4. #4
    Membre chevronné Avatar de delphine35
    Femme Profil pro
    Analyste BO
    Inscrit en
    Novembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste BO

    Informations forums :
    Inscription : Novembre 2009
    Messages : 265
    Par défaut
    Essaye : (je ne sais pas si c'est exactement ce que tu veux faire ... )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim tot As Range
     
    Sub Newline()
     
        Set tot = Cells(11, 4)
     
        If tot.Value > "" Then     ' tot is nothing => sera toujours faux 
            tot.Offset(1, 0).EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove  'insertion d'une ligne
            tot.Offset(1, 0).Select  'selection de la cellule
        End If
     
    End Sub

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : Juin 2009
    Messages : 58
    Par défaut
    merci Delphine j'apprécie ton aide.
    maintenant je parviens à insérer une ligne mais tot n'est pas incrémenté.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Nline()
    Dim test As Boolean
    Set tot = Cells(11, 4)
    'affectation de tot à la cellule D11
    If tot Is Nothing Then test = True
    If test = False Then
    tot.Offset(1, 0).EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    'insertion d'une ligne
    Set tot = tot.Offset(1, 0)
    'incrémentation de tot
    End If
    End Sub
    merci

    maintenant j'ai un boucle infinie. aidez moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Nline()
    Dim test As Boolean
    Set tot = Cells(11, 4)
    'affectation de tot à la cellule D11
    If tot Is Nothing Then test = True
    Do While test = False
    tot.Offset(1, 0).EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    'insertion d'une ligne
    Set tot = tot.Offset(1, 0)
    'incrémentation de tot
    Loop
    End Sub

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonsoir thugelife,

    Comment appelle tu la proc "Nline" ?
    A partir de l'évennement "Worksheet_SelectionChange" ? si c'est le cas, il faudrait que tu neutralise les évennements avant d'exécuter ta proc (normalement celà ne devrait pas boucler ? Bizarre) du style :

    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
     
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'ou Private Sub Worksheet_Change(ByVal Target As Range)
     
        Application.EnableEvents = False
        Nline
        Application.EnableEvents = True
     
    End Sub
     
    'Voici la proc retouchée (si j'ai bien comrpis ce que tu souhaite faire, si D11 n'est pas vide, ajoute une ligne au dessous)
    Dim tot As Range
     
    Sub Nline()
     
        'affectation de tot à la cellule D11
        'le problème ici, c'est qu'à chaque
        'exécution de la proc, tot revient à D11
        'donc l'offset ne sert à rien si entre temps
        'il n'est pas utilisé ailleurs
        Set tot = Cells(11, 4)
     
        'si tot n'est pas vide
        If Not tot Is Nothing Then
           'insertion d'une ligne
            tot.Offset(1, 0).EntireRow.Insert
            'incrémentation de tot
            Set tot = tot.Offset(1, 0)
        End If
     
    End Sub
    Prends l'habitude de commenter ton code non pas dessous mais dessus les lignes, c'est plus clair pour ce qui doivent le lire, enfin, si je peux me permettre ce conseil.

    Hervé.

Discussions similaires

  1. Réponses: 5
    Dernier message: 07/08/2007, 10h10
  2. Ajouter dynamiquement des lignes à un tableau HTML
    Par jeannot1974 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 20/11/2006, 15h39
  3. Jtable ajout dynamique de ligne
    Par krolineeee dans le forum Composants
    Réponses: 3
    Dernier message: 16/11/2006, 11h46
  4. [Tableaux] Ajout dynamique de ligne dans un tableau
    Par gforce dans le forum Langage
    Réponses: 7
    Dernier message: 14/07/2006, 12h02
  5. [Tableaux] Ajout dynamique de lignes à un tableau
    Par loreleï85 dans le forum Langage
    Réponses: 6
    Dernier message: 22/06/2006, 17h14

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