Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème code vb - base de données

  • Initiateur de la discussion Initiateur de la discussion pietrus2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

pietrus2

Guest
Bonjour,

Je vien de récuperer un fichier excel contenant une base de donnée et differents formulaires.
J'ai rajouter 5 colonnes dans la feuille excel afin de completer ce fichier, j'ai donc également modifié le code afin que les formulaires prennent en compte ces 5 dernieres colonnes , mais lorque que je fais un nouvel enregistrement via le formulaire appelé "BdDlg2" , cela ne fonctionne pas correctement, au niveau de ces 5 derniers parametres. L'enregistrement sur la feuille excel se fait mal , les informations ne se mettent pas sur la bonne ligne.

Je pense donc avoir du oublié de modifier quelque chose au niveau du code mais je ne sais pas quoi ?

Merci de votre aide

Pierre
 

Pièces jointes

Re : Problème code vb - base de données

Bonjour Pietrus2,

Après quelques tests, j'ai fait 2 modifs qui ont l'air de fonctionner.

1 - Le positionnement sur une nouvelle ligne était incorrect car tu pars de B6 (Range("Bigramme")) et tu ne tiens pas compte de la ligne blanche suivante sur laquelle le "End(xlDown)" va te positionner.

J'ai modifié de la façon suivante:

Code:
Private Sub BoutonValider_Click()
Dim Depart As Range
Dim Reponse As Variant
If Bigram.Value <> "" And Design.Value <> "" Then                                    ' Si le bigramme et la désignation ont bien été saisis
    Select Case Ajout
        Case True                                                                                       ' Si c'est un nouvel enregistrement
            If Vide = False Then                                                                     ' Si le tableau est vide
                Set Depart = RMMoteurs.Range("Bigramme").[COLOR=red]Offset(2, 0).[/COLOR]End(xlDown).Offset(1, 0)
            Else                                                                                            ' Si le tableau n'est pas vide
                Set Depart = RMMoteurs.Range("Bigramme").Offset([COLOR=red]2[/COLOR], 0)
            End If
        Case False                                                                                      ' Si ce n'est pas un nouvel enregistrement
            Set Depart = RMMoteurs.Range("Bigramme").Offset([COLOR=black]Position[/COLOR], 0)
    End Select

2 - La sélection de la zone avant le tri ne fonctionne pas correctement dans la mesure où toutes les colonnes de la première ligne ne sont pas remplies et le "End(xlRight)" s'arrête à la première cellule vide.

Je te propose la correction suivante puisque le nombre de colonnes est fixe:

Code:
ThisWorkbook.Activate
Sheets("BOM").Select
Range("B8").Select
Range(Selection, Selection.End(xlDown)).Select
[COLOR=red]Selection.Resize(Selection.Rows.Count, 18).Select[/COLOR]
Selection.Sort Key1:=Range("B8"), Order1:=xlAscending, Header:=xlNo, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
Range("B8").Select

Essaye et dis-moi si tu as d'autres problèmes.

@+

Gael
 
Dernière édition:
Re : Problème code vb - base de données

Bonjour Gael,

Merci d'avoir jeté un coup d'oeil sur ce projet.

J'ai fait les 2 modifs que tu m'as indiqué, mais cela ne marche pas.
Quand je fais un premier enregistrement via le formulaire, tout va bien , mais si j'en fais un deuxieme ça ne marche pas

Pierre
 

Pièces jointes

Re : Problème code vb - base de données

Bonjour Pierre,

J'ai essayé en utilisant plutot End(XlUp) et ça fonctionne beaucoup mieux.

Modif 1:

Code:
...
Case True                                                                                       ' Si c'est un nouvel enregistrement
            If Vide = False Then                                                                     ' Si le tableau est vide
                Set Depart = RMMoteurs.Range("B500").End(xlUp).Offset(1, 0)
...

Et aussi pour la sélection de la zone à trier:

Code:
...
Sheets("BOM").Select
Range("B8", Range("B500").End(xlUp)).Select
Selection.Resize(Selection.Rows.Count, 18).Select
...


@+

Gael
 
Re : Problème code vb - base de données

Re,

et la sélection peut se faire aussi en une seule instruction:

Code:
Range("B8", Range("S" & Range("B500").End(xlUp).Row)).Select

@+

Gael
 
Re : Problème code vb - base de données

Bonjour à vous

je viens de récupérer ton fichier que je trouve super et que je me suis permis d'adapté à mon application.

seul petit Hic, c'est au niveau des formats de dâte, lorsque tu créé un nouvel article j'ai 2 textbox dans Bdlg2 qui sont au format date et lors de la re transcription sur la feuille, il y à inversion entre le jour et le mois...! ! !
Est ce que vous auriez une idée ?

D'avance merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
990
Réponses
3
Affichages
432
C
Réponses
1
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…