Comment metre un enregistrement a la ligne

Signaler
Messages postés
23
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
14 mars 2009
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
bonjour,
je voudrait savoir si quel qu un pourait m'aider parce ce que je n'arrive pas a metre a la ligne met enregistrement que je fait dans une userform dans une feuille exel.
merci

<!-- / message -->

10 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
Le VB de Excel est du VBA, pas du .Net
Catégorie modifiée

"je n'arrive pas a metre a la ligne met enregistrement" : traduction ? "mes enregistrements" ?
Enregistrement de quoi ? dans quoi ? Fichier ? Base de données ? qu'as-tu écris ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
23
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
14 mars 2009

je n 'arrive pas a metre mes enregistrement a la ligne dans une base de donne sur une feuille exel je n 'arrive qu'a saisir qu un seul enregistremt
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Base de donnée, c'est vaste ...

Eventuellement, ajoute un vbCrLf dans ta chaine :
   "première ligne" & vbCrLf & "deuxième ligne"

En mode saisie, il faut taper au clavier Alt-Entrée

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bonjour Jack, et inco13,

Comme Jack le fait remarquer, tu restes absolument pas clair... Il faut bien préciser les choses point par point, et le plus simplement possible (avec le moins de détails inutiles pour améliorer la compréhension).

Pour toi, que signifie "enregistrement" ?
- une cellule d'une feuille Excel ?

Ensuite, que cherches-tu à faire ?
- Ecrire qlq chose dans des cellules successives ?
- Ecrire qlq chose dans une seule cellule avec un saut de ligne ?

Amicalement,
Us.
Messages postés
23
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
14 mars 2009

 je suis en trein de faire un formullaire contenant plusieur champ,  ce que je souhaiterait c'est la programation en vba qui me permettra de revenir a la ligne dans ma base de donnee pour que je puisse saisir d'autre enregistrement da   ns mon formulaire qui se rajouteront a ma base de donne.
merci
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
La clarté, ce n'est pas ton fort...
Tu n'as pas répondu à ce que te demandait us_30 (salut)

As-tu un bout de code qui ne fonctionne pas ?

Si tu veux créer un saut de ligne dans une cellule, utilise vbLf qui n'affichera pas un petit carré comme le ferait vbCr ou vbCrLf.

Si tu veux sauter carrément à la cellule suivante, il faudrait alors voir ton code pour pouvoir t'aider. En principe, tu dois garder en mémoire dans une variable, la ligne sur laquelle tu inscris tes données et tu incrémentes cette variable pour chaque enregistrement...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
23
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
14 mars 2009

bonjour,
desole si tu ne comprend pas trop ce que j essai de t' expliquer c'est pour cela que je t'envoi mon le code du bouton valider de mon formulaire en esperant que tu comprenent. je souhaiterai que lorsque je clique sur le bouton valider cettte enregistrement ce met a la suite du precedent dans la base de donner.
merci  

code :

Private Sub valider_Click()
nom_clt.SetFocusIf nom_clt "" Or prenom_clt "" Or adresse_clt = "" Or cp_clt = "" Or ville_clt = "" Or classe = "" _ Or destination "" Or adulte "" Or nourisson = "" Or enfant = "" Then
  reponse = MsgBox("Vous n'avez pas remplis certaines informations!", vbCritical, "ATTENTION")
 ElseIf nom_clt <> "" And prenom_clt <> "" And adresse_clt <> "" And cp_clt <> "" And ville_clt <> "" And destination <> "" And classe <> "" And adulte <> "" _
 And nourisson <> "" And enfant <> "" Then
 
 Range("nom_clt") = "nom_clt"
 Range("prenom_clt") = "prenom_clt"
 Range("adresse_clt") = "adresse_clt"
 Range("cp_clt") = cp_clt
 Range("ville_clt") = ville_clt
 Range("destination") = destination
 Range("classe") = classe
 Range("adulte") = adulte
 Range("enfant") = enfant
 Range("nourisson") = nourisson
 End If


client.Hide
End Sub
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
J'y vois 2 problèmes.

Le premier n'est pas vraiment un problème, mais plus une amélioration de la condition.
Tu vérifies si chaque champ est vide avec un OR, ce qui est bien. Donc, si un est vide tu affiches le message. C'est le ElseIf qui ne sert à rien, puisque déjà vérifié dans le If. Si un des champ est vide, on affiche le message, autrement ils sont tous remplis, non ?If nom_clt "" Or prenom_clt "" Or adresse_clt = "" Or cp_clt = "" Or _    ville_clt "" Or classe ""  Or destination = "" Or adulte = "" Or _    nourisson "" Or enfant "" Then
          reponse = MsgBox("Vous n'avez pas remplis certaines informations!", _
                                          vbCritical, "ATTENTION")
Else  'sans aucune condition
    'le reste de ton code
End If

Le 2e point est plus un problème...
Tu utilises des noms de plages dans tes Range(...)
Il faut plutôt y aller avec les colonnes que tu dois connaître et les lignes qui seraient une variable qui s'incrémente. De plus, tu écris dans ce Range une valeur entre guillemets qui ne sera rien d'autre que ce texte entre guillemets, et non pas le contenu d'une variable.

Dans cette ligne

Range("nom_clt") = "nom_clt"

J'imagine que "nom_clt" est le nom d'une plage préalablement définie et que
"nom_clt"
  est le nom d'une variable... Est-ce bien ça ?

Si oui, il faudrait enlever les guillemets autour de la variable et utiliser un Range comme
Range("A" & Ligne) = nom_clt

Range("B" & Ligne) = prenom_clt

...

Pour connaître la valeur de Ligne, tu écris ceci
Ligne = Cells(Rows.Count, "A").End(xlUp).Row + 1  'première ligne vide en A
avant de remplir les cellules

Est-ce que ça t'éclaire un peu ?

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bonsoir MPi,

On peut également continuer avec une plage nommé, en se déplaçant à l'interieur. Pour cela, on utilise ITEM...

Voici un petit exemple de code :

Sub Macro1()



' Se déplacer dans une plage nommé en VBA



' - A partir d'excel nommé une plage, avec :
' - Insertion>Nom>Définir = choisir une plage (par ex. toute la colonne A)



' => utiliser la propriété Item de Range



' Exemple : Moi vaut la plage A$:A$
' et on désigne la 4ième case avec Item



Range("Moi").Item(2).Select




' Dans le cas d'une plage à deux dimension, Item(ligne,colonne)
   
End Sub



Pour le reste, je pense la même chose...


Amicalement,


Us.
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Salut us_30,
Toujours bon à savoir... En fait, je n'utilise jamais de noms définis parce que j'ai toujours des problèmes de liaisons (nom existant à écraser ou non...) quand les pages sont collées sur d'autres fichiers, en plus du redimensionnement... mais bon, c'est une technique qui est tout de même utilisée et c'est bon de savoir comment jouer avec ces plages...

Je vais essayer de m'en rappeler quand arrivera le moment de travailler avec ceux-ci...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI