La méthode delete de la classe Range a échoué

Bonjour à toutes et à tous,

Feuille BD budgets prévisionnels : développeur, macro, macro EBDBUPR, exécuter : tout va être effacer, ok, message d'erreur (titre du sujet). Cette erreur est dans le module MAEM, procédure Sub EBDBUPR, ligne supprimer toutes les lignes. La macro EBDAB s'exécute correctement elle. Je ne vois pas où est l'erreur. D'avance merci pour votre aide.

13budgets1.xlsm (294.25 Ko)

Bonjour Budgets, bonjour le forum,

Essaie comme ça (en enlevant le EntireRow) :

Range("TabBDBUPR").Delete

Ou, si tu veux TOUT supprimer, le tableau structuré y compris, essaie avec :

sh07.ListObjects("TabBDBUPR").Delete

Bonjour ThauThème,

Merci d'avoir répondu. Les deux méthodes fonctionnent correctement. Je vais garder la première.

bonjour,

les 2 méthodes fonctionnent correctement quand le tableau n'est pas vide, donc il faut examiner cela.

     With sh07.ListObjects("TabBDBUPR")
          If .ListRows.Count Then .DataBodyRange.Delete
     End With

Bonjour BsAlv,

Ce serait une instruction à ajouter en plus ?

non, c'est au lieu des 2 autres options.

essayez avec un tableau non vide, 2 fois ceci, il passera le premier et bloque au 2ième, donc il faut tester avant !!!

Range("TabBDBUPR").Delete

Range("TabBDBUPR").Delete

Exact : il a réussi la première ligne mais il refuse la deuxième (le tableau est vide).

Puisse-je vous poser une autre question relative à mon fichier mais sans rapport avec delete ? D'avance merci.

okay ! Si c'est une reponse courte, pas de problème, mais si c'est complètement autre chose, je pense que le site préfère d'ouvrir un nouveau poste. A vous la prise en compte.

Bonsoir BsALV,

Private Sub tbPUABUPR_Change()
tbPUABUPR = Format(CDbl(tbPUABUPR), "#.00") 'Va transformer la chaine de caractères en chaine numérique.
Multiplication
End Sub

Private Sub tbQABUPR_Change()
tbQABUPR = Format(CDbl(tbQABUPR), "#.00") 'Va transformer la chaine de caractères en chaine numérique.
Multiplication
End Sub

Private Sub Multiplication()

'Effectuer le produit de tbPUABUPR avec le tbQABUPR.
On Error GoTo fin
Debug.Print CDbl(tbPUABUPR), CDbl(tbQABUPR) 'Va transformer la chaine de caractères en chaine numérique.
On Error GoTo 0
tbTABUPR = Format(CDbl(tbPUABUPR) * CDbl(tbQABUPR), "#.00") 'Va transformer la chaine de caractères en chaine numérique et multiplier le tbPUBUPR par le tbQABUPR.
Exit Sub
fin:
tbTABUPR = ""
End Sub

Dans la formule Format, que signifie le # et à quoi sert-il ? Dans mon programme, le nombre de chiffres avant la virgule est variable tant pour le prix unitaire que pour la quantité. Quand je veux taper 100,00 pour le prix unitaire, 12,00 pour la quantité, c'est la croix et la bannière pour y arriver. Merci de m'apporter votre aide et vos lumières pour ce problème. J'ai un titre créé qui s'intitule Multiplier deux tb dont le résultat doit aller dans un autre tb.

Sub teste()
     prix = "100,12"     'texte comme dans un textbox !
     quantité = "12,34"     'texte
     Total = prix * quantité     'multiplier = créer des valeur doubles
     MsgBox Total

     Range("A1:C1").Value = Array(prix, quantité, Total)   'remarque : A et B sont aligné à gauche, donc des textes

     Range("A3:C3").Value = Array(CDbl(prix), CDbl(quantité), Total)     'maintenant A et B ne sont plus des textes par CDbl (Convert Double)
     Range("A4:C4").Value = Array(--prix, 0+quantité, Total)     'maintenant A et B ne sont plus des textes, 2 fois muliplier avec -1

End Sub

VBA est anglais/americain. Eux, ils utilisent le point pour les decimaux et la virgules pour les milliers.

Donc Cent vingt trois mille .... = 123,456.789 (americain) = 123.456,789 (France, ...)

ce que vous montrez, ce sont 2 textboxes dans un userform, je crois.

Le contenu de cela est texte, au moment ou vous voulez écrire ces textes vers une cellule, vous devez traduire cela avec CDbl (=convert double) ou multiplier avec 1, ou ajouter 0 ou 2 fois multiplier avec -1 ....

la différence avec format entre # et 0, c'est que le 0 sera toujours appliqué et le # seulement quand c'est nécessaire.

le format "#.00" appliqué sur le valeur 123,456 sera "123.46" donc arrondi sur le 2ième decimal.

le format "#,###.00" : 123,456 >>> 123,46 / 1234,567 >>> 1,234.47 / 1234567,89 >>> 1,234,567.89

Bonjour BsAlv,

Dans votre procédure Sub Teste, que représentent A3.C3 et A4.C4 ? Je suppose que ce sont des cellules du tableau structuré TabBDBUPR de la feuille BD budgets prévisionnels mais ces colonnes ne comprennent aucun chiffre. Les cellules concernées sont les colonnes M à O incluses dans ledit tableau. Dans le formulaire concerné, je n'arrive toujours pas à saisir mes prix unitaire et quantités. D'avance merci pour votre réponse.

bonjour,

j'avais 2 textes, prix et quantité, donc comparable avec le contenu d'un textbox. Maintenant, c'est le problème de sauvegarder/copier ce contenu dans une cellule comme valeur numerique et ne pas comme texte.

J'essaiais plusieurs fois de copier 3 cellules en une fois, donc le formule ici dessous, A1 recoit prix, B1 recoit Quantié et C1 recoit total, (mais sans modification, donc le resultat ce sont texte, si les valeurs sont aligné à gauche ou numerique quand ils sont alignés à droite, agrandez les colonnes peut-être pour mieux voire)

 Range("A1:C1").Value = Array(prix, quantité, Total) 

La ligne suivante, les 2 valeurs "texte" sont traduit avec CDbl, donc les valeurs des 3 cellules sont tous aligné à droite

La ligne suivante, même sorte de traduction sans CDbl, mais en mulitpliant 2 fois avec -1 (ce --) ou en ajoutant 0 (ce +0), le résultat est de nouveau aligné à droite, donc ce sont des valeurs "numerique", non-texte !

Bonjour BsAlv,

Pourriez-vous me dire ce que dois faire pour tester votre proposition. Peut-être comprendrais-je mieux car, désolé, je ne comprends pas trop les différentes instructions.

je sais que je ne sais pas expliquer les choses et surtout pas en français.

Dans l'autre poste, ces gens ont aussi leur mieux.

Je demande à quelqu'un autre pour répondre ...

Bonsoir BsAlv,

Si vous trouvez quelqu'un pour répondre, vous pourrez me communiquer sa réponse s'il vous plaît

Rechercher des sujets similaires à "methode delete classe range echoue"