Problème avec du VBA

Bonjour à toutes et à tous,

J'ai un souci avec mon classeur Excel où tout fonctionne parfaitement mais j'ai un message d'erreur (certes sans conséquence sur le fonctionnement)lié au VBA.

Dans ma feuille calendrier, quand je change d'agent dans la liste déroulante, le message d'erreur "Erreur d'exécution 1004, la méthode Delete de la classe Range a echouée" qui s'affiche.

Ce même message s'affiche aussi quand je supprime des congés.

Par contre, il ne s'affiche pas sur un calendrier vierge où aucun congés n'a été posé.

Il y a une erreur ou plusieurs dans le VBA mais laquelle ?

Merci pour votre aide =)

Marie

capture2

Bonjour,

Vous indiquez la référence d'une cellule mais vous souhaitez effacer la ligne. c'est contradictoire.

'non
feuil1.cells(lige_ext1,  2).entireRow.Delete

'oui
feuil1.Row(lige_ext1,  2).Delete

Merci pour votre retour mais je ne comprends pas tout désolée... avez-vous une solution ?

Dans votre code l'erreur est soulignée en jaune remplacez votre ligne par celle que j'ai donné plus haut.

Merci mais cela ne fonctionne pas

Oops j'ai pas pensé quand la variable va prendre la valeur +1 et votre variable feuille s'écrit avec LLe erreur de rédaction.

Dans ce cas juste çà devrait suffir pour effacer la ligne

feuille1.Row(lige_ext1).Delete

Bonjour,

Xmenpl : J'ai comme un léger désaccord !

Cybermarie : Pourtant ta syntaxe est correcte... Même si c'est un peu beurk...

Je pense plutôt à une erreur de type bibliothèque introuvable, mébon... avec TOUSSA comme renseignements on va pas aller loin...

Prière de mettre ton code entre balise. Je me refuse à retaper toute ta macro d'après une image et à confectionner un classeur.

Ou tu nous fournis de quoi travailler ou tu nous fournis des images mais moi les "bons points" j'ai passé l'âge...

A+

Bonjour Galopin,

Euh oui ok je peux faire cela. Par contre, que cela ne t'empêches pas d'être correcte avec moi... Pour info, personne ne t'obliges à répondre.

Je vais poster ce que tu me demandes et libre à toi de m'aider ou pas.

Bonjour,

Voici le code qui pose souci :

Sub extraire()
Dim ligne_ext1 As Integer: Dim ligne_ext2 As Integer
Dim lannee As Integer: Dim le_nom As String
Dim feuille1 As Worksheet: Dim feuille2 As Worksheet

le_nom = Range("BD11").Value: lannee = Range("BD8").Value
Set feuille1 = Sheets("Extraction")
ligne_ext1 = 2

Do While feuille1.Cells(ligne_ext1, 2).Value <> ""

feuille1.Cells(ligne_ext1, 2).Delete

Loop

Set feuille2 = Sheets("conges")
ligne_ext2 = 3: ligne_ext1 = 2

Do While feuille2.Cells(ligne_ext2, 2).Value <> ""

If (feuille2.Cells(ligne_ext2, 2).Value = le_nom And Right(feuille2.Cells(ligne_ext2, 3).Value, 4) = lannee) Then
feuille1.Cells(ligne_ext1, 2).Value = feuille2.Cells(ligne_ext2, 2).Value
feuille1.Cells(ligne_ext1, 3).Value = feuille2.Cells(ligne_ext2, 3).Value
feuille1.Cells(ligne_ext1, 4).Value = feuille2.Cells(ligne_ext2, 4).Value
feuille1.Cells(ligne_ext1, 5).Value = feuille1.Cells(ligne_ext1, 2).Value & Replace(feuille1.Cells(ligne_ext1, 3).Value, "/", "-") & feuille1.Cells(ligne_ext1, 4).Value
ligne_ext1 = ligne_ext1 + 1
End If

ligne_ext2 = ligne_ext2 + 1

Loop

End Sub

Le message d'erreur s"affiche quand je change d'agent dans ma liste déroulante ou quand je supprime des congés. Cela fonctionne quand même malgré tout.

Pas de message d'erreur pour un agent dont le calendrier est vierge.

Merci =)

Re bonjour Cybermarie, de mon coté un fichier pour exemple (sans les noms) pour tester et comprendre le pourquoi fonctionne quand calendrier vide.

Bonjour,

Comme l'a dis Xmenpl, un fichier aiderait beaucoup, on ne peut en général qu'essayer de deviner ce qui ne va pas avec une impression d'écran, on voit bien la ligne sur laquelle ça s'arrête, mais par exemple:

  1. On ne peut pas aller vérifier les valeurs des variables
  2. On ne peut pas tenter de changer des éléments pour voir ce qui ne va pas
  3. On ne peut pas vérifier si ça marche sans passer par VBA (pour tester par exemple si la feuille est protégée des suppressions des lignes)

Merci pour vos retours.
Dès demain, je vous mets à disposition un fichier exemple =)

Très bonne soirée.

Bonsoir,

je ne connais pas votre fichier mais en général dans un code VBA on dimensionne les variables lignes en Long et non pas en Integer afin de ne pas avoir d'erreur au delà de la valeur 32000 (et des poussières)... Bon cela ne vient certainement pas de là ou alors peut-être que oui si votre condition de "Do" est toujours vrai alors ça tourne jusqu'à l'erreur...

@ bientôt

LouReeD

Voici le fichier exemple, merci pour votre aide =)

2conges-test.xlsm (139.72 Ko)

J'ajoute un élément supplémentaire pour que mon fichier soit nickel !

Je voudrais que dès lors que l'on change d'année, le solde des congés et des rtt repartent à leurs valeurs initiales.

MERCI

Il y a un mot de passe sur la feuille masquée EXTRACTION.

Il faut :

- soit retirer la protection feuille de l'onglet Extration.

-soit ajouter les lignes de code vba pour retirer la protection en début de macro et la remettre en fin de macro.

2conges-test.xlsm (139.68 Ko)

Ben du coup sans la protection feuille l'erreur vba ne se produit plus au changement de nom.

Oh mais c'est super ça !!! Merci à toi

Rechercher des sujets similaires à "probleme vba"