> 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 participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
261,01 €Kit de 64 Go (4x16Go) de mémoire DDR4 Crucial Ballistix 3600 MHz RGB à 261,01 € livré
Valable jusqu'au 26 Octobre

Amazon Allemagne fait une promotion sur le kit de 64 Go (4x16 Go) de mémoire DDR4 Crucial Ballistix 3600 MT/s CL18 à 256,10 € (avec la TVA ajustée). Comptez 4,91 € pour la livraison en France soit un total de 261,01 € livré alors qu'on le trouve ailleurs à plus de 359 €. Vous pourrez personnaliser la palette de couleurs de votre ordinateur avec 16 LED RGB dans 8 zones sur chaque module.

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de douanes. Si vous êtes perdu en allemand, vous pouvez traduire le site en anglais.


> Voir l'offre
43,00 €Clavier Corsair K55 RGB à 43 €
Valable jusqu'au 27 Octobre

Amazon fait une promotion sur le clavier Corsair K55 RGB qui passe à 43 € livré gratuitement au lieu de 60 €. Avec ses touches silencieuses et ses 6 touches macros, vous avez à votre disposition une surface de jeu idéale et performante. Ce modèle embarque la technologie anti-ghosting, des touches multimédia et un repose-poignet amovible.


> Voir l'offre
72,10 €Kit de 16 Go (2 x 8 Go) de mémoire DDR4 Corsair Vengeance LPX 3200 MHz à 72,10 € livré
Valable jusqu'au 27 Octobre

Amazon Allemagne fait une belle promotion sur le kit de 16 Go (2x8 Go) de mémoire DDR4 Corsair Vengeance LPX 3200 MHz qui passe à 67,46 €. Comptez 4,64 € pour la livraison en France soit un total de 72,10 € livré. Une très bonne affaire !


> Voir l'offre

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