"Erreur d'exécution 91"

Résolu/Fermé
Amande42 Messages postés 25 Date d'inscription vendredi 13 novembre 2015 Statut Membre Dernière intervention 7 août 2019 - Modifié par jordane45 le 29/01/2016 à 11:16
Amande42 Messages postés 25 Date d'inscription vendredi 13 novembre 2015 Statut Membre Dernière intervention 7 août 2019 - 1 févr. 2016 à 16:29
Bonjour à tous,

Et d'avance merci à ceux qui se pencheront sur mon problème, je suis à deux doigts de pleurer devant mon écran ou de l'envoyer contre le mur... ;-)

Je suis toujours sur la conception du même outil, j'avance lentement mais sûrement.

Le problème du jour : l'objectif de ce code est de trouver la "Valcherchée" (concaténation de 3 cellules se trouvant dans la feuille "MàJ PA - retour audités") dans la colonne Z de la feuille "BDD résumé". J'ai vérifié via une MsgBox et "Valcherchée" correspond bien à ce que je cherche à trouver.
A partir de là et de la méthode offset qui doit pointer sur la colonne G, trouver la cellule indiquant le numéro de campagne associée à la "Valcherchée" et le remplacer par le numéro saisi dans la feuille "MàJ PA - retour audités" (actualisation du numéro de campagne de chaque mission tous les 6 mois).

J'ai testé ma procédure hier et après une journée à bûcher dessus, ça marchait enfin en partant le soir. Mais, car il y en a toujours un, ce matin, ça ne marchait plus. J'ai bien essayé de l'améliorer en fonction des indications trouvées en ligne, mais après 3h dessus, rien n'y fait et j'abandonne !

En exécutant ma procédure pas à pas, ça plante au niveau de "MsgBox Cellule" (j'ai rajouté cette ligne pour essayer d'identifier le problème") et le message d'erreur 91 apparaît. Or, je n'ai pas de with sans end with (j'ai essayé d'en mettre au cas où), mes variables sont déclarées (j'ai essayé de les mettre en Variant voir si ça solutionnait mon problème...), etc.
Si j'enlève la ligne de code "MsgBox Cellule", la procédure suit son cours et renvoie à Nothing, ma MsgBox "Non trouvé" apparaît et fin du traitement.
Ce que je ne comprends pas, c'est que ma "Valcherchée" est bien présente dans ma colonne Z.

Private Sub MAJNumCampagne()
    
    'RECHERCHE CELLULE AVEC N° CAMPAGNE CORRESPONDANT A LA MISSION SELECTIONNEE DANS LA FEUILLE "BDD résumé"
    Dim Valcherchée As String
    Dim Cellule As Range 'cellule comprenant les 3 valeurs recherchées concaténées
    Dim myRange As Range 'cellule correspondant au num de campagne
    
    'Concaténation Mission + Année + Entité à chercher
    With Sheets("MàJ PA - retour audités")
        Valcherchée = .Range("D6").Value & .Range("G8").Value & .Range("D10").Value
    End With
    
    'Activation de la cellule contenant le n° de campagne en fonction de la mission et affectation du numéro actualisé
    Set Cellule = Sheets("BDD résumé").Columns(26).Find(Valcherchée, Lookat:=xlWhole)
MsgBox Cellule
    If Cellule Is Nothing Then
       MsgBox "Non trouvé."
    Exit Sub
    End If
    
    If Not Cellule Is Nothing Then
        myRange = Cellule.Offset(, -19)
        myRange.Value = Sheets("MàJ PA - retour audités").Range("I17").Value
    End If

End Sub


Je craque !! Plus de patience.
D'avance merci pour votre précieuse aide.

Bonne journée à tous.
Amande42

PS : comment fait-on sur ce forum pour mettre le code en forme (encadré et couleurs) et faciliter ainsi la lecture ?


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

8 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
29 janv. 2016 à 11:24
Bonjour,

- Pour mettre du code :
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

- Pour ce qui est de l'erreur sur la ligne de code :
MsgBox Cellule

.... vu que tu déclare ta variable ainsi :
 Dim Cellule As Range

... Cellule ... est une "RANGE" (une plage de celllules ou une seule cellule...)
Donc... cet "objet" contient une propriété VALUE (pour en avoir le contenu...) , une propriété ADRESSE ( pour connaitre ses coordonnées.....) ... bref... à toi de choisir ce que tu veux afficher.

Tu pourrais donc écrire :
 Set Cellule = Sheets("BDD résumé").Columns(26).Find(Valcherchée, Lookat:=xlWhole)
MsgBox Cellule
    If Cellule Is Nothing Then
       MsgBox "Non trouvé."
       Exit Sub
     else
      MsgBox Cellule.Adresse
       myRange = Cellule.Offset(, -19)
        myRange.Value = Sheets("MàJ PA - retour audités").Range("I17").Value
     End If




Ensuite tu indiques :

ma "Valcherchée" est bien présente dans ma colonne Z.

... mais... le texte est présent TEL QUEL dans ta cellule... ou il fait parti d'un TEXT contenu dans ta cellule ???
Pour rappel : xlWhole Correspond à => Correspondance EXACTE.


Et pour finir ....
=> N'utilises pas de caractères ACCENTUES dans le nom de tes variables !
(ni aucun caractère spécial... (hormis les underscore ))
0