> Tous les forums > Forum Bureautique
 Problème de suppression de données VBA dans base
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Yaloo
  Posté le 04/03/2011 @ 10:53 
Aller en bas de la page 
Petit astucien

Bonjour à tous,

Et oui, c'est encore moi!!!

Voici l'exemple de mon fichier

Dans mon fichier réél j'ai défini des noms par le "gestionnaire de noms" du type =DECALER(BD!$B$2;;;NBVAL(BD!$B:$B)-1;) , =DECALER(BD!$C$2;;;NBVAL(BD!$C:$C)-1;) , etc... Tout va bien lorsque je supprime une ligne autre que la première ligne de ma base.

If OkSuppr = 6 Then
i = 2
Z = Me.ListView1.SelectedItem
With WsBD
iR = WsBD.Range("A2:F" & MEM - 1)
Do While Y = False
If .Cells(i, 1) = Z Then
.Rows(i).Delete
MEM = MEM - 1
Y = True
Else
i = i + 1
End If
Loop
End With

ListView1.ListItems.Remove (ListView1.SelectedItem.Index)

Lorsque que je supprime la première ligne, dans le "gestionnaire de noms" définit plus haut m'indique =DECALER(BD!#REF!;;;NBVAL(BD!$C:$C)-1;), donc ça plante ma récupération de données, j'ai essayé ce qui suit, mais ça ne fonctionne pas. Car Z renvoi le numéro Id et non le numéro de la ligne. Et donc forcément ça plante à la ligne en rouge. J'ai essayé plein de truc mais je bloque.

If OkSuppr = 6 Then
i = 2
Z = Me.ListView1.SelectedItem
With WsBD
iR = WsBD.Range("A2:F" & MEM - 1)
Do While Y = False
If .Cells(i, 1) = Z Then

Tablo = Range(Cells(Z + 1, 1), Cells(MEM, 6))
Range(Cells(Z, 1), Cells(MEM, 6)) = Tablo
Range(Cells(MEM, 1), Cells(MEM, 6)).ClearContents


MEM = MEM - 1
Y = True
Else
i = i + 1
End If
Loop
End With

ListView1.ListItems.Remove (ListView1.SelectedItem.Index)

Auriez-vous une idée ?

{#}

Publicité
galopin01
 Posté le 04/03/2011 à 11:13 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

bonjour,

Je n'ai pas trop le temps de tester aujourd'hui mais essaye au lieu de :

=DECALER(BD!$B$2;;;NBVAL(BD!$B:$B)-1;)

mettre :

=DECALER(BD!$B$1;1;;NBVAL(BD!$B:$B)-1;)

ça devrait coller. idem pour la colonne C

A+

Yaloo
 Posté le 04/03/2011 à 15:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour Galpin,

Ca fonctionne.

Par contre, dans une autre feuille, j'ai une formule du type =si(BDF!A2="";vrai;faux)

Lorsque je supprime la première ligne de ma base, j'ai =si(BDF!#REF!;vrai;faux)

Donc forcément ça me renvoit #REF!

C'est aussi pour ça que je voulait utiliser qqchose du type

Tablo = Range(Cells(Z + 1, 1), Cells(MEM, 6))
Range(Cells(Z, 1), Cells(MEM, 6)) = Tablo
Range(Cells(MEM, 1), Cells(MEM, 6)).ClearContents

Tu m'avais fait ça pour un autre fichier et je pensais que ce pouvait être la solution a mon problème.



Modifié par Yaloo le 04/03/2011 15:51
galopin01
 Posté le 04/03/2011 à 19:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Là... J'ai plongé ma boule de cristal dans le marc de café mais c'est un peu obscur !

Yaloo
 Posté le 04/03/2011 à 20:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bon tout ça c'est sur le fichier que je t'ai envoyé

A+

galopin01
 Posté le 14/03/2011 à 01:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Je ne te serai pas d'une grande aide sur ce coup. Je ne pense pas que tu puisses résoudre ce genre de problème par formules. Enfin... en tout cas moi je ne m'y essaierai pas.

Peut-être que tu trouveras des formuleux costauds qui pratiquent ce genre de sport ? Pour ma part je ne m'y aventure guère. D'ailleurs je ne suis pas certain que ce soit possible. En tout cas conceptuellement ça me choque.

Une fois que tu mets le doigt dans une base de donnée et les USF, il faut mener ton projet jusqu'au bout par macro : il n'est plus question de faire référence à ta base de donnée par formule sous peine de la punition que tu évoques. Et appliqué à la gestion de RH c'est diablement compliqué, surtout au niveau débutant.

Tes en-têtes de BD sont pollués et ne correspondent pas aux plages nommées. La BD n'est pas définie...

Dans ta feuille date les plages nommées dynamiques sont complètement faussées par l'ajout de la ligne 1.

Dans les modules de Main et Func tu peux virer toutes les Déclarations Def... en têtes de module : C'est un résidu de ma programmation, parfaitement inutile chez toi.

En résumé, je ne vis pas bien ce que je peux faire pour toi dans ce cas. C'est une question qui dépasse largement le cadre de ce forum.

Si je devais vraiment suggérer une direction à partir de l'existant je supprimerai le contenu de la feuille récap et je travaillerai plutôt avec les BD* (Fonctions de base de donnée) et puis je ramènerai les résultats dans la feuille date par formule...

Yaloo
 Posté le 14/03/2011 à 08:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bon

Merci d'y avoir jeté un coup d'oeil.

A+



Modifié par Yaloo le 14/03/2011 08:39
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Sujets relatifs
reinitialiser clé primaire dans une base de données LIBRE OFFICE
Formulaires dans base de données
Recherche de Valeurs dans une base de données
Erreur java dans base de données libreoffice
base de données dans EXCEL
Works 9 Base de données problème de copier coller
Liaison d'une table dans plusieurs base de données
Probleme pour importer donnees dans les cellules
Problème base de données
trouver des valeurs cible dans une base de donnees
Plus de sujets relatifs à Problème de suppression de données VBA dans base
 > Tous les forums > Forum Bureautique