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 :

[XL-2003] Insertion ligne grace à un Userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénierie financière
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénierie financière
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Par défaut [XL-2003] Insertion ligne grace à un Userform
    Bonjour à tous,

    Je travaille actuellement sur un suivi d'activité. J'ai donc des informations concernant des employés à remplir par ligne. Par exemple, je vais avoir: le nom, le nombre d'appels reçus, le nombre d'appels pris, ...

    Ces informations sont organisées par mois, c'est à dire que j'ai 12 blocs de données par feuille Excel. Afin de faciliter l'usage du Workbook pour l'utilisateur, j'ai décidé de coder en VBA.

    Mon objectif est de faire un Userform, avec des Textbox pour rentrer le nom, le prénom et les autres données puis appuyer sur un bouton valider dans le Userform, et non pas directement sur la Worksheet, permettant d'écrire la saisie dans une nouvelle ligne insérée à la suite de la dernière ligne de la plage de données du mois de janvier par exemple (je ferais un bouton pour lancer le Userform à côté de chaque mois).

    Le Userform est déjà fait et j'ai testé par exemple avec la ligne 34 et cela marche. Mon problème est donc le suivant: je n'arrive pas à faire en sorte d'insérer au fur et à mesure à la suite de la dernière ligne de la plage de données par exemple C7:I32 (cette dernière ligne est donc variable, puisque si on insert une nouvelle ligne, ça ne serait plus à la ligne 32 mais 33 etc...).

    J'ai donc eu plusieurs idées, notamment incrémenter un nombre par exemple ou bien utiliser row.count... Mais je n'arrive pas au bout: j'arrive à insérer une nouvelle ligne la première fois avec les données saisies correctement, mais si j'ajoute à nouveau un autre employé, soit il ne s'écrit pas, soit il se recopie sur le précédent, etc...

    Merci de votre compréhension et peut être de votre aide

    Bien cordialement,

    Phil

  2. #2
    Membre expérimenté Avatar de vanhoa
    Homme Profil pro
    Analyste Financier
    Inscrit en
    Octobre 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Analyste Financier
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 117
    Par défaut
    Bonjour,

    Voila quelque chose qui peut t'aider je pense:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.Cells(Rows.Count, 1).End(xlUp).Row
    Si c'est pour ta feuille 1, ce code va te donner le numero de la ligne ou il y a la derniere cellule non vide pour ta colonne 1

    tu peux faire egalement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
    meme resultat.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénierie financière
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénierie financière
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Par défaut
    Merci de ta réponse vanhoa

    Effectivement, je connais ce code, mais mon soucis est que ce n'est justement pas la dernière cellule non vide de la colonne que je recherche, mais si on suit le même raisonnement, c'est la dernière cellule non vide d'une plage de données.

    En effet, les mois se succèdent les uns après les autres sur la même feuille. Donc la dernière cellule non vide de la colonne risque de me donner qqchose après le mois de décembre, suis-je assez clair? :

    Bien cordialement,

    Phil

  4. #4
    Membre expérimenté Avatar de vanhoa
    Homme Profil pro
    Analyste Financier
    Inscrit en
    Octobre 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Analyste Financier
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 117
    Par défaut
    Ok, je comprends.

    Donc ces 12 blocs, sont ils colles les uns aux autres? il y a t il des lignes vides entre?
    Ou encore, il y a t il une mise en forme particuliere pour la derniere ligne d'un mois en question?
    Par exemple, disons que la derniere ligne de chaque mois a un fond vert, et bien on pourrait utiliser quelque chose du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i = 7 to Feuil1.Cells(Rows.Count, 1).End(xlUp).Row
    If Feuil1.Cells(i,1).Interior.Color = RGB(0,176,80) Then 'RGB(0,176,80) correspond a un type de couleur verte
           'bla bla bla
    Else
           'bla bla bla
    End If
    On saurait egalement que dans tous les cas on as seulement 12 cellules/lignes qui auront un fond vert puisqu'on a 12 mois.

    Sinon, peux tu donner un exemple de fichier avec des donnees avant mise a jour et apres mise a jour? Pour essayer de voir quelle astuce utiliser pour reperer cette derniere ligne de la plage de donnee (comme la couleur verte par exemple)

  5. #5
    Membre averti
    Homme Profil pro
    Ingénierie financière
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénierie financière
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Par défaut
    Merci encore de ta réponse

    Il serait éventuellement possible de mettre une ligne verte, pourquoi pas. Les blocs ne sont pas les uns collés aux autres, mais je te met un fichier pour que tu puisses te rendre compte un petit peu du truc. Si tu vas dans le code tu as le Userform normalement, mais c'est un peu bordelique Mais c'est pour te donner une idée du machin

    Classeur1.zip

    Bien cordialement,

    Phil

  6. #6
    Membre expérimenté Avatar de vanhoa
    Homme Profil pro
    Analyste Financier
    Inscrit en
    Octobre 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Analyste Financier
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 117
    Par défaut
    Voici le fichier avec une proposition qui fonctionne (je l'ai testee)

    le code que j'ai utilise est le suivant.

    Pour ton UserForm1, mets le code suivant:
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Private Sub UserForm_Initialize()
    Dim nbmois As Byte, i As Byte
     
    nbmois = Feuil2.Cells(1, 1).End(xlDown).Row
     
    If ComboBox1.ListCount <> nbmois Then
        ComboBox1.Clear
        For i = 1 To nbmois
            ComboBox1.AddItem (Feuil2.Cells(i, 1))
        Next i
    Else
    End If
    End Sub
     
    'Bouton Valider
    Private Sub Valider_Click()
    Dim nbmois As Integer, i As Integer, xVerif As Integer, derniereligne As Integer, valTarget As Integer, j As Integer
     
    derniereligne = Feuil1.Cells(Rows.Count, 3).End(xlUp).Row
    nbmois = Feuil2.Cells(1, 1).End(xlDown).Row
    xVerif = 1
     
    For i = 1 To nbmois
        If ComboBox1.Value = Feuil2.Cells(i, 1) Then
            valTarget = i
        Else
        End If
    Next i
     
     
    For i = 1 To derniereligne
        If Feuil1.Cells(i, 3) = "Total" Then
            If xVerif = valTarget Then
                Feuil1.Rows(i - 1).Insert (xlShiftDown)
                Feuil1.Cells(i - 1, 3) = TextBox1.Value & " " & Left(TextBox2, 1)
                Feuil1.Cells(i - 1, 4) = TextBox3.Value
                Feuil1.Cells(i - 1, 5) = TextBox4.Value
                Feuil1.Cells(i - 1, 6) = TextBox5.Value
                Feuil1.Cells(i - 1, 7) = TextBox6.Value
                Exit For
            Else
                xVerif = xVerif + 1
            End If
        Else
        End If
    Next i
     
    Unload Me
     
    End Sub
    dans ta feuille 2 tu verras que j'ai mis le nom des mois. Ils servent a alimenter ta ComboBox1 de ton UserForm

    et enfin dans le code de ta Feuil1 met:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton3_Click()
    UserForm1.Show
    End Sub
    comme ca tu peux cliquer sur ton bouton "inserez un agent" pour lancer ton UserForm1

    de toute facon le fichier en piece jointe possede le code!

    dis moi si ca fonctionne
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. VBA-Excel:Présentation d'un tableau (insertion ligne de légende)
    Par gabrielle_dl dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 15/06/2006, 11h11
  2. [Access 2003] Insertion de requête
    Par lolo_bob2 dans le forum Access
    Réponses: 1
    Dernier message: 12/05/2006, 18h48
  3. [Excel VB] Insertion ligne avec formules
    Par ptitsoleil87 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/12/2005, 16h21
  4. Insertion lignes
    Par Isa31 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/05/2005, 10h32
  5. Pb procedure insertion ligne
    Par richton95 dans le forum Oracle
    Réponses: 3
    Dernier message: 17/03/2005, 21h01

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