renommé une fonction creer par macro

fets95

XLDnaute Junior
Bonjour je souhaiterai utilisé une fonction dejà existante en changeant quelque donné tel que les colonnes ou autre mais le probleme c'est que je n'arrive pas a la renommer, voir ci dessous

J'utilise cette fonction en ecrivant dans la cellule =findplan()
Function findplan(numdevis)
Dim DerLig As Long, Lig As Long, VPlan As String
findplan = ""
With Sheets("Feuil2")
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
For Lig = 2 To DerLig
VPlan = .Range("A" & Lig).Value
' Vérifier si le devis du plan correspond à la recherche
If CStr(.Range("B" & Lig)) = numdevis Then
findplan = findplan & VPlan & " " & "/" & " "
End If
Next Lig
End With
If Len(findplan) > 0 Then
' Enlever la dernière virgule
findplan = Left(findplan, Len(findplan) - 1)
End If
End Function

2eme fonction
Je voudrai l'utiliser en écrivant =findplan2 ()

Function findplan2(numdossier)
Dim DerLig As Long, Lig As Long, VPlan As String
findplan2 = ""
With Sheets("Feuil2")
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
For Lig = 2 To DerLig
VPlan = .Range("A" & Lig).Value
' Vérifier si le devis du plan correspond à la recherche
If CStr(.Range("B" & Lig)) = numdevis Then
findplan2 = findplan2 & VPlan & " " & "/" & " "
End If
Next Lig
End With
If Len(findplan2) > 0 Then
' Enlever la dernière virgule
findplan2 = Left(findplan2, Len(findplan2) - 1)
End If
End Function
Lorsque j'ecris cela il ne reconnait pas la fonction
je ne sais pas du tout si ce que j'ai fais renomme la fonction , je ne pense aps d'ailleurs étant donné que cela ne fonctionne pas :)

Merci a vous
 
C

Compte Supprimé 979

Guest
Re : renommé une fonction creer par macro

Salut Fets95,

Ce n'est pas que ta fonction n'est pas reconnue !
C'est que tu n'as pas les bonnes variables !

Un truc simple à utiliser, au début de ton module, tu mets : OPTION EXPLICIT

Ce qui t'oblige à déclarer tes variables, mais te permets également de trouver rapidement l'erreur

Code:
Function findplan2([COLOR=red][B]numdossier[/B][/COLOR])
Dim DerLig As Long, Lig As Long, VPlan As String
findplan2 = ""
With Sheets("Feuil2")
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
For Lig = 2 To DerLig
VPlan = .Range("A" & Lig).Value
' Vérifier si le devis du plan correspond à la recherche
If CStr(.Range("B" & Lig)) = [COLOR=red][B]numdevis [/B][/COLOR]Then
findplan2 = findplan2 & VPlan & " " & "/" & " "
End If
Next Lig
End With
If Len(findplan2) > 0 Then
' Enlever la dernière virgule
findplan2 = Left(findplan2, Len(findplan2) - 1)
End If
End Function
Tu appeles ta fonction avec la variable "NumDossier" et tu testes sur la variable "NumDevis" = pas possible :rolleyes:

A+
 

fets95

XLDnaute Junior
Re : renommé une fonction creer par macro

Salut Fets95,

Ce n'est pas que ta fonction n'est pas reconnue !
C'est que tu n'as pas les bonnes variables !

Un truc simple à utiliser, au début de ton module, tu mets : OPTION EXPLICIT

Ce qui t'oblige à déclarer tes variables, mais te permets également de trouver rapidement l'erreur

Code:
Function findplan2([COLOR=red][B]numdossier[/B][/COLOR])
Dim DerLig As Long, Lig As Long, VPlan As String
findplan2 = ""
With Sheets("Feuil2")
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
For Lig = 2 To DerLig
VPlan = .Range("A" & Lig).Value
' Vérifier si le devis du plan correspond à la recherche
If CStr(.Range("B" & Lig)) = [COLOR=red][B]numdevis [/B][/COLOR]Then
findplan2 = findplan2 & VPlan & " " & "/" & " "
End If
Next Lig
End With
If Len(findplan2) > 0 Then
' Enlever la dernière virgule
findplan2 = Left(findplan2, Len(findplan2) - 1)
End If
End Function
Tu appeles ta fonction avec la variable "NumDossier" et tu testes sur la variable "NumDevis" = pas possible :rolleyes:

A+

aaaahhh d'accord merci beaucoup :D
 

fets95

XLDnaute Junior
Re : renommé une fonction creer par macro

Je viens de faire le changement en fonction de ta remarque mais cela ne fonctionne toujours pas
option explicite etait déjà entré je l'ai pas ajouter lors de mon copier coller :)

Function findplan2(numdossier)
Dim DerLig As Long, Lig As Long, VPlan As String
findplan2 = ""
With Sheets("Feuil2")
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
For Lig = 3 To DerLig
VPlan = .Range("A" & Lig).Value
' Vérifier si le devis du plan correspond à la recherche
If CStr(.Range("C" & Lig)) = numdossier Then
findplan2 = findplan2 & VPlan & " " & "/" & " "
End If
Next Lig
End With
If Len(findplan2) > 0 Then
' Enlever la dernière virgule
findplan2 = Left(findplan2, Len(findplan2) - 1)
End If
End Function
 
Dernière édition:

fets95

XLDnaute Junior
Re : renommé une fonction creer par macro

Voila le fichier, se serait refaire la meme fonction que pour la recherche en fonction du numéro de devis mais cette fois ci en fonction du numero de dossier, j'ai changé les colonne correspondante mais je n'ai toujours pas reussi a réutilisé la fonction :$

Il affiche #Valeur dans la cellule
 

Pièces jointes

  • Fets95_Classeur1.xls
    35 KB · Affichages: 29
  • Fets95_Classeur1.xls
    35 KB · Affichages: 38
  • Fets95_Classeur1.xls
    35 KB · Affichages: 38
Dernière édition:
C

Compte Supprimé 979

Guest
Re : renommé une fonction creer par macro

Salut Fets95,

Avec le fichier, c'est effectivement mieux, même si tu n'as pas mis le 2ème code dedans :confused:

Fichier modifié ;)
 

Pièces jointes

  • Fets95_Classeur2.xls
    38 KB · Affichages: 33

Discussions similaires

Réponses
7
Affichages
379

Membres actuellement en ligne

Statistiques des forums

Discussions
312 793
Messages
2 092 161
Membres
105 241
dernier inscrit
Mixlsm