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 12/12/2011, 14h52   #1
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
Par défaut Ajout de données par userform dans une feuille excel

Bonjour,

Je fais actuellement une base de données avec une interface (userform) en vba.
Jusque là tous va bien! Quand je rentre les données concernant des personnes dans l'userfom je veux envoyer les données sur une feuille excel.
Donc j'aimerais savoir comment faire pour envoyer les données sur une ligne vierge?

voici ce que j'ai fait mais ceci permet de cibler une ligne:

Code :
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
Private Sub CommandButton2_Click()
 
    Sheets("BDD").Range("B2823").Value = TextBox1.Value 'nom
    Sheets("BDD").Range("B2823").Value = TextBox2.Value 'prenom
    Sheets("BDD").Range("B2823").Value = CheckBox1.Value 'genre homme
    Sheets("BDD").Range("B2823").Value = CheckBox2.Value 'genre femme
    Sheets("BDD").Range("B2823").Value = TextBox3.Value 'fonction
    Sheets("BDD").Range("B2823").Value = TextBox4.Value 'adresse
    Sheets("BDD").Range("B2823").Value = TextBox5.Value 'code postal
    Sheets("BDD").Range("B2823").Value = TextBox6.Value 'ville
    Sheets("BDD").Range("B2823").Value = TextBox7.Value 'telephone perso
    Sheets("BDD").Range("B2823").Value = TextBox8.Value 'email perso
    Sheets("BDD").Range("B2823").Value = TextBox9.Value 'nom structure
    Sheets("BDD").Range("B2823").Value = TextBox10.Value 'type structure
    Sheets("BDD").Range("B2823").Value = TextBox11.Value 'adresse pro
    Sheets("BDD").Range("B2823").Value = TextBox12.Value 'code postal pro
    Sheets("BDD").Range("B2823").Value = TextBox13.Value 'ville pro
    Sheets("BDD").Range("B2823").Value = TextBox14.Value 'tel pro
    Sheets("BDD").Range("B2823").Value = TextBox15.Value 'email pro
    Sheets("BDD").Range("B2823").Value = CheckBox3.Value 'envois formation oui
    Sheets("BDD").Range("B2823").Value = CheckBox4.Value 'envois formations non
    Sheets("BDD").Range("B2823").Value = CheckBox5.Value 'dsi oui
    Sheets("BDD").Range("B2823").Value = CheckBox6.Value 'dsi non
    Sheets("BDD").Range("B2823").Value = TextBox16.Value 'dispositif
    Sheets("BDD").Range("B2823").Value = TextBox17.Value 'statut
    Sheets("BDD").Range("B2823").Value = CheckBox7.Value 'participations formations oui
    Sheets("BDD").Range("B2823").Value = CheckBox8.Value 'participations formations non
    Sheets("BDD").Range("B2823").Value = CheckBox9.Value 'usagers cdr oui
    Sheets("BDD").Range("B2823").Value = CheckBox10.Value 'usagers cdr non
 
End Sub


Si quelqu'un vois comment faire, je suis preneur....Merci et bonne journée
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 15h45   #2
Membre régulier
 
Femme
Inscription : septembre 2011
Messages : 86
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 86
Points : 75
Points : 75
Peter,

Je te propose ce bout de code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Nom = UserForm3.ComboBox2.Value
Type1 = UserForm3.ComboBox1.Value
Type2 = UserForm3.ComboBox3.Value
 
Worksheets(14).Select
 
'Inscrit les données dans la feuille Base de Données
v_adresse = Range("A3").End(xlDown).Offset(1, 0).Address 'trouve la dernière ligne
Range(v_adresse) = Nom
Range(v_adresse).Offset(0, 1).Value = Type1
Range(v_adresse).Offset(0, 2).Value = Type2
Range(v_adresse).Offset(0, 3).Value = DateDebut


Cdt
Cocotte278 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 16h25   #3
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
Par défaut vba formulaire excel

Merci et j'ai essayé le code je n'arrive pas à le faire fonctionner!
Je rajoute des images de ma base de données et de mon formulaire pour faciliter la compréhension de mon probléme!!
Images attachées
Type de fichier : jpg base_données.JPG (34,9 Ko, 6 affichages)
Type de fichier : jpg formualire.JPG (44,8 Ko, 9 affichages)
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 16h28   #4
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
Par défaut affectation variable

Bonjour à vous deux,

Si je peux me permettre.

Pour ce genre d'action, il vaut mieux
- détecter la dernière cellule en partant de la dernière ligne de la feuille
- affecter une variable à cette cellule et informer les cellules correspondantes

Soit (à adapter)

Code :
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
Public Sub essai()
 
'Déclaration variable
Dim v As Range
 
With UserForm3
        Nom = .ComboBox2.Value
        Type1 = .ComboBox1.Value
        Type2 = .ComboBox3.Value
End With
 
With Worksheets(14)
        'Affectation d'une variable à la 1ère cellule vide
        Set v = .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 1) 
End With
 
With v
    .Value = Nom
    .Offset(0, 1).Value = Type1
    .Offset(0, 2).Value = Type2
    .Offset(0, 3).Value = DateDebut
End With
 
'Réinitialisation de la variable
Set v = Nothing
 
End Sub
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 09h15   #5
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
Par défaut excel vba userform

Merci mais je comprends pas le code!
A quoi correspond With Worksheets(14) parce qu'il e trouve pas l'indice apparemment.....
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 09h22   #6
Membre régulier
 
Femme
Inscription : septembre 2011
Messages : 86
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 86
Points : 75
Points : 75
Bonjour tous les deux,

Citation:
With Worksheets(14)
signifie que tu travailles avec ce qui se trouve dans ta feuille n°14.

Dans ton cas, cela donne :
Cocotte278 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 09h26   #7
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
Par défaut code

Bonjour Peter11, Bonjour le Forum,

Comme indiqué, le code indiqué reste à adapter.
C'est en le comprenant mot par mot et en l'adaptant que les notions évoquées deviendront familières.
Ici, signifie la feuille de calcul indicée 14 dans ton éditeur VBE.
Une autre manière de procéder consiste à nommer la feuille
Exemple
Code :
Worksheets("nomdelafeuille")
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 09h27   #8
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
Par défaut vba exel userform

C'est bon j'ai trouvé worksheet c'est le numéro de la feuille!
Par contre quand je rentre un nom dans mon formulaire et que je valide, il me l'enregistre sur la premiere ligne de mon tableau alors que j'aimerais qu'il trouve la derniere et qu'il l'enregistre dedans....
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 09h34   #9
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
Par défaut dernière ligne

Salut Peter

Ajoute à ce code cette nouvelle ligne (Debug.Print...) à cet endroit et retourne le résultat affiché dans ta fenêtre Exécution (visible par le menu VBE ou par combinaison des touches CTRL + G)

Code :
1
2
3
4
5
6
With Worksheets(14)
        'Affectation d'une variable à la 1ère cellule vide
        Set v = .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 1) 
End With
 
Debug.Print v.Address
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 09h48   #10
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
Par défaut excel vba userform

Je m'escuse ça marche mais par contre quand je rentre le nom d'une personne il me là place bien à la fin du tableau par contre si je rentre une seconde personne apres il m'efface le premier rentré pour mettre le second alors que le but est de mettre les personnes les unes apres les autres!
Encore merci aux personnes qui prennet du temps pour m'aider!!
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 10h07   #11
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
Salut Peter11,


Code :
1
2
3
4
With Worksheets(14)
        'Affectation d'une variable à la 1ère cellule vide
        Set v = .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 1) 
End With
Ici, on considère la 1ère ligne vide en colonne A (argument 1 de l'Objet Cells).

En quelle colonne, le nom figure-t-il ? Si celle-ci est différente de A (la première), alors il te faut adapter le code et toutes les occurences de la méthode .

Vérifie également le retour de la méthode évoquée ci-dessus en observant si la cellule v se décale bien d'une ligne à la fois.
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 10h16   #12
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
Par défaut vba excel userform

alors en colonne A j'ai un numéro d'identifiant et en colonne B j'ai le nom de la personne!
en ce qui concerne le debug print il m'affiche la derniere valeur du tableau....
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 10h19   #13
Membre habitué
 
Homme Michael
Ingénieur qualité méthodes
Inscription : octobre 2010
Messages : 200
Détails du profil
Informations personnelles :
Nom : Homme Michael
Localisation : France, Aisne (Picardie)

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Industrie

Informations forums :
Inscription : octobre 2010
Messages : 200
Points : 115
Points : 115
Bonjour,

je viens de voir ton probleme.
Je pense que le plus simple et que tu fasses une base de données directement avec un Access ou similaire tu gagneras ton temps.

et par la suite dit toi que si tu as une modification a faire sur ta BD, genre un truc que tu n'as pas encore pensé, bah pour le mettre en place tu vas t'embeter à tout refaire.

a voir ^^
Je pense que si tu es partie sur excel c'est que tu ne connais pas encore Access.
redstoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 10h22   #14
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
Par défaut vba excel userform

En fait c'est au niveau du boulot on m'impose excel car tout le monde c'est l'utiliser alors que access c'est moins évident....
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 10h25   #15
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
Par défaut rectification

J'avais inversé ligne et colonne dans la méthode suivante.

Corrige :

Code :
1
2
3
4
With Worksheets(14)
        'Affectation d'une variable à la 1ère cellule vide
        Set v = .Cells(.Rows.Count, 1).End(xlUp).Offset(1,0) 
End With
Et reviens si nécessaire.
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/12/2011, 10h29   #16
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
Par défaut vba excel userform

Bravo et Merci beaucoups ça marche!!!!
Bonne journée et surement à bientôt
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 14h41   #17
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
Extrait des Règles du Forum

Citation:
Quand votre problème est résolu, pensez à cliquer sur le bouton [Résolu] en bas de la discussion !
à voir sur le lien suivant

Les Règles du Forum
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG 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 01h36.


 
 
 
 
Partenaires

Hébergement Web