Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/12/2011, 11h09   #1
Candidat au titre de Membre du Club
 
Homme
Inscription : décembre 2011
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : décembre 2011
Messages : 45
Points : 11
Points : 11
Par défaut Saisie dans tableau

Bonjour a tous,

J'ai un petit code en VBA qui me permet de rajouter 1 client ( a l'aide d'une saisie dans une box ) par un bouton, voici le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Ajouterclient()
 Dim lgCol As Long
    Dim lgDerLig As Long
    Dim strSaisie As String
 
    ' Dernière ligne
    lgDerLig = Range("C" & Cells.Rows.Count).End(xlUp).Row + 1
 
    ' Boucle de la colonne B à L
    For lgCol = 2 To 12
        ' Pas de question pour la colonne "Date"
        If lgCol <> 5 Then
            strSaisie = InputBox(Cells(1, lgCol) & "?", "Saisie")
            ' Si saisie effectuée
            If strSaisie <> "" Then
                Cells(lgDerLig, lgCol).Value = strSaisie
            End If
        End If
    Next lgCol
End Sub
On oublie la colonne 5 qui est un calcul de date
Ce code fonctionne trés bien a un petit détail prés :
Ma feuille est un tableau ( tableau 7 ) et la saisie se fait hors du tableau , j'aimerai que se soit a l’intérieur de celui ci ou que mon tableau augmente d'une ligne lorsque la saisie est terminé.
Si quelqu'un a une idée
Je tourne en rond depuis un moment .
Merci
francky62000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 11h18   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 920
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 920
Points : 7 237
Points : 7 237
Bonjour,

Si dans Tableau tu veux dire une mise en forme avec un contour, il te faut soit ajouter une ligne avant la dernière soit remettre à jour la mise en forme.

Le plus simple est le premier cas, mais il implique que la dernière ligne saisie sera toujours en avant dernière position (Sauf si tu fais un tri a la fin de ton code)

Code :
1
2
3
4
 
    ' Dernière ligne
    lgDerLig = Range("C" & Cells.Rows.Count).End(xlUp).Row
    Rows(lgDerLig).Insert
Le reste du code ne change pas
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 13h16   #3
Candidat au titre de Membre du Club
 
Homme
Inscription : décembre 2011
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : décembre 2011
Messages : 45
Points : 11
Points : 11
merci , cela me va trés bien , ca fonctionne a merveille.
Je te remercie

Est -il possible d'ajouter 1 liste dans la box de saisie

Voici le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 Sub AjouterProduit()
 Dim lgCol As Long
    Dim lgDerLig As Long
    Dim strSaisie As String
 
    ' Dernière ligne
    lgDerLig = Range("D" & Cells.Rows.Count).End(xlUp).Row
    Rows(lgDerLig).Insert
    ' Boucle de la colonne B à I
    For lgCol = 2 To 9
        ' Pas de question pour la colonne "NB Produit vendu"
        If lgCol <> 7 Then
            strSaisie = InputBox(Cells(1, lgCol) & "?", "Saisie")
            ' Si saisie effectuée
            If strSaisie <> "" Then
                Cells(lgDerLig, lgCol).Value = strSaisie
            End If
        End If
    Next lgCol
End Sub
J'aimerai qu'a la 2 iéme saisie ( soit la colonne C ) ,dans la box , la liste des fournisseurs apparaissent afin de le sélectionner , la liste existe déja sous le nom : Nomfournisseur1

Merci
francky62000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 13h32   #4
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Pour l'histoire de lajout de ligne et de leur formatage, vu que tu utilises Excel 2007, tu à la possibilité de créer un tableau (Onglet Insertion, Tableau).
Une fois le tableau mis en place (attention aux entêtes) lorsque tu ajoutes des données en fin de tableau, celui-ci se redimensionne automatiquement.
Tu peux bien sur définir le format que tu veux pour ton tableau.

Plus globalement, je serais toi je regarderais du coté des UserForm pour faire ce que tu souhaites, l'affichage de plusieurs InputBox n'est pas très esthétique ni agréable pour l'utilisateur.

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h09.


 
 
 
 
Partenaires

Hébergement Web