Problème application Morceau de code

OOLIVE

XLDnaute Occasionnel
Bonjour à tous,

Je me retourne vers vous car j'ai un soucis dans l'exécution de mon code.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$G$8" Then
UserForm1.Show
End If

For l = 19 To 24
Cells(l, 4).Clear
Next

i = Sheets("REFERENCE").Range("C500").End(xlUp).Row

For j = 1 To i
If Cells(16, 3).Value = Sheets("REFERENCE").Cells(j, 3).Value Then
Cells(19 + k, 4).Value = Sheets("REFERENCE").Cells(j, 4)
k = k + 1
End If
Next


End Sub


En effet, je cherches à faire apparaître des valeurs en fonction de la valeur qu'il y a dans la cellule C16. La cellule C16 est une liste déroulante dépendante de la formule suivante:

=DECALER(REFERENCE!$C$1;EQUIV($G$8;REFERENCE!$A:$A;0)-1;;NB.SI(REFERENCE!$A:$A;$G$8))

Le code fonctionne sur un autre classeur mais pas le moindre sur le programme où j'en ai besoin, comme si n'exécutait pas ce code.. Quelqu'un aurait-il des solutions à mon problème ?


Merci à tous.
 

OOLIVE

XLDnaute Occasionnel
Re : Problème application Morceau de code

PS: La partie en gras est la partie du code sur laquelle j'ai une erreur d'exécution.. (Aucun résultat)

Ce que je ne comprend pas, c'est que ce code fonctionne sur un autre classeur, pas sur celui la !
 

OOLIVE

XLDnaute Occasionnel
Re : Problème application Morceau de code

Sisi, il y a bien..

J'ai regardé le code de plus près est le problème (du coup, de ce que j'ai vu), est que lorsque que la macro vient comparer la valeur de C16 avec la feuille REFERENCE, j'ai l'impression que le matching n'est pas fait!

le débogeur passe de "if If Cells(16, 3).Value = Sheets("REFERENCE").Cells(j, 3).Value Then"
à "end sub"

Des idées ?
 

OOLIVE

XLDnaute Occasionnel
Re : Problème application Morceau de code

Absolument pas!

L'ensemble du code (modules et userforms) fonctionnent.

Il y a vraiment que cette partie qui ne fonctionne pas dans mon classeur.

la macro semble ne pas prêter attention à cette partie là et passe de If à End Sub, comme si la condition n'était pas respectée.. Or, elle l'est.

En fait, la valeur trouvée en C16 découle d'une liste en cascade.
dans le fichier Référence, on retrouve les valeurs trouvables en C16 en colonne C et je souhaite prendre les valeurs associées en colonne D.

Le code fonctionne très bien sur un classeur mais PAS dans celui là.
 

OOLIVE

XLDnaute Occasionnel
Re : Problème application Morceau de code

Merci pour vos réponses.

Malheureusement, je ne comprend toujours pas pourquoi la macro saute mon code alors qu'hier, celui ci fonctionnait.

Je vous prie de trouver le fichier en pièce jointe, bien bien anonymisé.

Merci à vous.
 

Pièces jointes

  • test.xlsx
    159.8 KB · Affichages: 32
  • test.xlsx
    159.8 KB · Affichages: 36
  • test.xlsx
    159.8 KB · Affichages: 38

Gelinotte

XLDnaute Accro
Re : Problème application Morceau de code

Bonjour,

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim l As Integer
Dim J As Integer
Dim I As Integer
Dim K As Integer

If Target.Address = "$G$8" Then
UserForm1.Show
End If

For l = 19 To 24
Cells(l, 4).Clear
Next

I = Sheets("REFERENCE").Range("C500").End(xlUp).Row

For J = 1 To I
If Cells(16, 3).Value = Sheets("REFERENCE").Cells(J, 1).Value Then
Cells(19 + K, 4).Value = Sheets("REFERENCE").Cells(J, 3)
K = K + 1
End If
Next

End Sub


J'ai modifié deux références (en bleu) pour adapter à ton fichier exemple.

Par contre, Cells(J, 1).value est la bonne colonne pour la recherche.

Dans la colonne C de la feuille "Reference", il y avait des 0 cachés jusqu'au bas de la feuille. En cherchant la dernière ligne, la réponse était toujours 1 puisque de C500, le code remontait jusqu'au prochain changement. Comme il n'y avait pas de changement, il remontait jusqu'à 1.

Autre chose, est-ce voulu qu'en changeant de cellule n'importe où dans la feuille "Modele_Facture" que la macro s'exécute. Car, j'aurai pensé que ce fusse seulement pour la cellule G8 pour le UserForm et C16 pour siphonner les infos de la feuille "Référence".

Teste cela ...


Geli
 

OOLIVE

XLDnaute Occasionnel
Re : Problème application Morceau de code

Merci Geli.

Je vois grâce à toi où est l'erreur dans le programme. Seulement, l'onglet "REFERENCE" est un fichier, comme son nom l'indique, de référence à un autre classeur.

De ce fait, les cellules sont des formules =='C:\Users\...\[BD_Clients.xlsm]Table_Missions'!B3.

y a-t-il une possibilité de faire exécuter ce code tout en gardant ma liaison ?


Concernant la cellule G8, j'aurais préféré faire apparaître le userform apres le doubleclik mais j'utilise cette private Sub plus tard en fait..

Merci à toi!
 

Gelinotte

XLDnaute Accro
Re : Problème application Morceau de code

Bonjour,

De ce fait, les cellules sont des formules =='C:\Users\...\[BD_Clients.xlsm]Table_Missions'!B3.

y a-t-il une possibilité de faire exécuter ce code tout en gardant ma liaison ?

J'avoue avec mon petit haricot mexicain sauteur qui me sert de cerveau, je ne comprends bien ton interrogation.

Si dans feuille "REFENCE", ce sont des liaisons vers [BD_Clients.xlsm]Table_Missions'!, ces liaisons seront conservées.

À moins que tu veuilles dire qu'au lieu de copier la valeur sur la feuille (Modele_Facture), tu veux copier la formule ????????????????????


Geli
 

OOLIVE

XLDnaute Occasionnel
Re : Problème application Morceau de code

Il t'a quand même permit de solutionner mon problème.. je le veux bien l'haricot mexicain là ^^
Je vais reformuler alors pour être le plus clair possible ;)

Avec les liaisons, mon onglet "REFERENCE" comportait des 0 cachés jusqu'en bas de la feuille, ce qui empechait la macro de s'exécuter correctement.


De ce fait, j'ai enlever la formule jusqu'en bas de la feuille.. Le problème étant que si maintenant, je rajoute une ligne dans mon fichier source, celle-ci ne se retrouvera pas dans mon onglet "REFERENCE".

Du coup, y a-t-il une solution pour avoir laissé la liaison mais que la macro s'exécute tranquillement, sans encombre ?
 

Gelinotte

XLDnaute Accro
Re : Problème application Morceau de code

Bonjour,

Est-ce obligatoire se servir de la colonne C pour chercher le dernier enregistrement ??

La colonne A ou B ne feraient-elles pas l'affaire ?

Sinon, c'est possible de faire référence, en colonne C, à une valeur > que 0 pour trouver le dernier enregistrement. Le temps d'exécution sera peut-être plus long, mais pas exagérément.


Geli
 

OOLIVE

XLDnaute Occasionnel
Re : Problème application Morceau de code

Si Si la colonne A ou B ferait l'affaire mais nous allons certainement nous retrouver confronter au même problème !
Car les colonnes A et B, ainsi que tout l'onglet d'ailleurs, fait référence à un classeur source.
 

Statistiques des forums

Discussions
312 495
Messages
2 088 969
Membres
103 993
dernier inscrit
Essens