Bonjour, Pour pouvoir utiliser la méthode "Evaluate" ou les crochets droits", les fonctions utilisées de la feuille doivent aussi exister en VBA. Dans ton exemple, la fonction "Address" n'existe pas en VBA, il n'y a pas une fonction équivalente à la fonction de la feuille de calcul. Il faut donc procéder autrement. Toutes les fonctions de la feuille de calcul disponible en vba font partie de la liste suivante. Après la saisie du point après Worksheetfonction, tu obtiens une liste déroulante des fonctions possibles. x = Application.WorksheetFunction. '------------------------------ Sub test() Dim A As Long ' retourne la ligne de la plus grande valeur '2 syntaxes possibles A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)") 'OU A = [MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)] Dim B As String 'Contient l'adresse de la valeur B = Cells(A, Range("zn").Column).Address MsgBox B End Sub '------------------------------ MichD
Bonjour,
Pour pouvoir utiliser la méthode "Evaluate" ou les crochets droits", les
fonctions utilisées de la feuille doivent aussi exister en VBA.
Dans ton exemple, la fonction "Address" n'existe pas en VBA, il n'y a
pas une fonction équivalente à la fonction de la feuille de calcul. Il
faut donc procéder autrement.
Toutes les fonctions de la feuille de calcul disponible en vba font
partie de la liste suivante. Après la saisie du point après
Worksheetfonction, tu obtiens une liste déroulante des fonctions possibles.
x = Application.WorksheetFunction.
'------------------------------
Sub test()
Dim A As Long ' retourne la ligne de la plus grande valeur
'2 syntaxes possibles
A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)")
'OU
A = [MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)]
Dim B As String 'Contient l'adresse de la valeur
B = Cells(A, Range("zn").Column).Address
Bonjour, Pour pouvoir utiliser la méthode "Evaluate" ou les crochets droits", les fonctions utilisées de la feuille doivent aussi exister en VBA. Dans ton exemple, la fonction "Address" n'existe pas en VBA, il n'y a pas une fonction équivalente à la fonction de la feuille de calcul. Il faut donc procéder autrement. Toutes les fonctions de la feuille de calcul disponible en vba font partie de la liste suivante. Après la saisie du point après Worksheetfonction, tu obtiens une liste déroulante des fonctions possibles. x = Application.WorksheetFunction. '------------------------------ Sub test() Dim A As Long ' retourne la ligne de la plus grande valeur '2 syntaxes possibles A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)") 'OU A = [MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)] Dim B As String 'Contient l'adresse de la valeur B = Cells(A, Range("zn").Column).Address MsgBox B End Sub '------------------------------ MichD
Jacquouille
Merci Denis Je vois que tu es aussi un adepte du Cap'taine Crochet. Bon WE Jacques " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : qbn6vh$rog$ Bonjour, Pour pouvoir utiliser la méthode "Evaluate" ou les crochets droits", les fonctions utilisées de la feuille doivent aussi exister en VBA. Dans ton exemple, la fonction "Address" n'existe pas en VBA, il n'y a pas une fonction équivalente à la fonction de la feuille de calcul. Il faut donc procéder autrement. Toutes les fonctions de la feuille de calcul disponible en vba font partie de la liste suivante. Après la saisie du point après Worksheetfonction, tu obtiens une liste déroulante des fonctions possibles. x = Application.WorksheetFunction. '------------------------------ Sub test() Dim A As Long ' retourne la ligne de la plus grande valeur '2 syntaxes possibles A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)") 'OU A = [MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)] Dim B As String 'Contient l'adresse de la valeur B = Cells(A, Range("zn").Column).Address MsgBox B End Sub '------------------------------ MichD
Merci Denis
Je vois que tu es aussi un adepte du Cap'taine Crochet.
Bon WE
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
qbn6vh$rog$1@gioia.aioe.org...
Bonjour,
Pour pouvoir utiliser la méthode "Evaluate" ou les crochets droits", les
fonctions utilisées de la feuille doivent aussi exister en VBA.
Dans ton exemple, la fonction "Address" n'existe pas en VBA, il n'y a
pas une fonction équivalente à la fonction de la feuille de calcul. Il
faut donc procéder autrement.
Toutes les fonctions de la feuille de calcul disponible en vba font
partie de la liste suivante. Après la saisie du point après
Worksheetfonction, tu obtiens une liste déroulante des fonctions possibles.
x = Application.WorksheetFunction.
'------------------------------
Sub test()
Dim A As Long ' retourne la ligne de la plus grande valeur
'2 syntaxes possibles
A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)")
'OU
A = [MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)]
Dim B As String 'Contient l'adresse de la valeur
B = Cells(A, Range("zn").Column).Address
Merci Denis Je vois que tu es aussi un adepte du Cap'taine Crochet. Bon WE Jacques " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : qbn6vh$rog$ Bonjour, Pour pouvoir utiliser la méthode "Evaluate" ou les crochets droits", les fonctions utilisées de la feuille doivent aussi exister en VBA. Dans ton exemple, la fonction "Address" n'existe pas en VBA, il n'y a pas une fonction équivalente à la fonction de la feuille de calcul. Il faut donc procéder autrement. Toutes les fonctions de la feuille de calcul disponible en vba font partie de la liste suivante. Après la saisie du point après Worksheetfonction, tu obtiens une liste déroulante des fonctions possibles. x = Application.WorksheetFunction. '------------------------------ Sub test() Dim A As Long ' retourne la ligne de la plus grande valeur '2 syntaxes possibles A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)") 'OU A = [MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)] Dim B As String 'Contient l'adresse de la valeur B = Cells(A, Range("zn").Column).Address MsgBox B End Sub '------------------------------ MichD
Jacquouille
Re Je ne sais pas si c'est l'usage du grand breton, mais il m'indique "Erreur 1004". Juste avant le WE. Juste pour m'emm*** -------------------- Sub test2() Dim zn As Range Dim A As Long Dim derLG As Integer Set zn = Range("G1:G" & derLG) A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)") 'OU 'A = [MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)] Dim B As String 'Contient l'adresse de la valeur B = Cells(A, Range("zn").Column).Address MsgBox B End Sub ------------------------------ Jacques " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : qbn6vh$rog$ Bonjour, Pour pouvoir utiliser la méthode "Evaluate" ou les crochets droits", les fonctions utilisées de la feuille doivent aussi exister en VBA. Dans ton exemple, la fonction "Address" n'existe pas en VBA, il n'y a pas une fonction équivalente à la fonction de la feuille de calcul. Il faut donc procéder autrement. Toutes les fonctions de la feuille de calcul disponible en vba font partie de la liste suivante. Après la saisie du point après Worksheetfonction, tu obtiens une liste déroulante des fonctions possibles. x = Application.WorksheetFunction. '------------------------------ Sub test() Dim A As Long ' retourne la ligne de la plus grande valeur '2 syntaxes possibles A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)") 'OU A = [MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)] Dim B As String 'Contient l'adresse de la valeur B = Cells(A, Range("zn").Column).Address MsgBox B End Sub '------------------------------ MichD
Re
Je ne sais pas si c'est l'usage du grand breton, mais il m'indique "Erreur
1004". Juste avant le WE.
Juste pour m'emm***
--------------------
Sub test2()
Dim zn As Range
Dim A As Long
Dim derLG As Integer
Set zn = Range("G1:G" & derLG)
A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)")
'OU
'A = [MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)]
Dim B As String 'Contient l'adresse de la valeur
B = Cells(A, Range("zn").Column).Address
MsgBox B
End Sub
------------------------------
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
qbn6vh$rog$1@gioia.aioe.org...
Bonjour,
Pour pouvoir utiliser la méthode "Evaluate" ou les crochets droits", les
fonctions utilisées de la feuille doivent aussi exister en VBA.
Dans ton exemple, la fonction "Address" n'existe pas en VBA, il n'y a
pas une fonction équivalente à la fonction de la feuille de calcul. Il
faut donc procéder autrement.
Toutes les fonctions de la feuille de calcul disponible en vba font
partie de la liste suivante. Après la saisie du point après
Worksheetfonction, tu obtiens une liste déroulante des fonctions possibles.
x = Application.WorksheetFunction.
'------------------------------
Sub test()
Dim A As Long ' retourne la ligne de la plus grande valeur
'2 syntaxes possibles
A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)")
'OU
A = [MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)]
Dim B As String 'Contient l'adresse de la valeur
B = Cells(A, Range("zn").Column).Address
Re Je ne sais pas si c'est l'usage du grand breton, mais il m'indique "Erreur 1004". Juste avant le WE. Juste pour m'emm*** -------------------- Sub test2() Dim zn As Range Dim A As Long Dim derLG As Integer Set zn = Range("G1:G" & derLG) A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)") 'OU 'A = [MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)] Dim B As String 'Contient l'adresse de la valeur B = Cells(A, Range("zn").Column).Address MsgBox B End Sub ------------------------------ Jacques " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : qbn6vh$rog$ Bonjour, Pour pouvoir utiliser la méthode "Evaluate" ou les crochets droits", les fonctions utilisées de la feuille doivent aussi exister en VBA. Dans ton exemple, la fonction "Address" n'existe pas en VBA, il n'y a pas une fonction équivalente à la fonction de la feuille de calcul. Il faut donc procéder autrement. Toutes les fonctions de la feuille de calcul disponible en vba font partie de la liste suivante. Après la saisie du point après Worksheetfonction, tu obtiens une liste déroulante des fonctions possibles. x = Application.WorksheetFunction. '------------------------------ Sub test() Dim A As Long ' retourne la ligne de la plus grande valeur '2 syntaxes possibles A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)") 'OU A = [MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)] Dim B As String 'Contient l'adresse de la valeur B = Cells(A, Range("zn").Column).Address MsgBox B End Sub '------------------------------ MichD
MichD
mais il m'indique "Erreur 1004". Juste avant le WE.
Dim derLG As Integer Set zn = Range("G1:G" & derLG)
**** Dans ta procédure, je ne vois pas où tu as attribué une valeur à derLG, par conséquent elle est 0 puisque tu la variable a le type Integer. Range("G1:G0") ne se peut pas, il n'y a pas de ligne 0 dans une feuille de calcul d'où ton erreur. ZN est le NOM d'une plage nommée dans la feuille de calcul. Une manière rapide de faire cela : With worksheets("NomDeLaFeuille") .Range("G1:G" & DerLG).name = "ZN" End With Dans ta ligne de code : Set zn = Range("G1:G" & derLG) ZN est un objet "Range" et non une plage nommée L'expression "SET" s'emploie seulement pour définir des objets comme "Range", "Worksheet", "Workbook", etc. Ces variables sont définies comme Dim ZN As range Dim Sh as Worksheet dim Wk as Workbook **** Cette ligne de code utilise une plage nommée.
A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)")
MichD
mais il m'indique "Erreur 1004". Juste avant le WE.
Dim derLG As Integer
Set zn = Range("G1:G" & derLG)
**** Dans ta procédure, je ne vois pas où tu as attribué une valeur à
derLG, par conséquent elle est 0 puisque tu la variable a le type
Integer. Range("G1:G0") ne se peut pas, il n'y a pas de ligne 0 dans une
feuille de calcul d'où ton erreur.
ZN est le NOM d'une plage nommée dans la feuille de calcul. Une manière
rapide de faire cela :
With worksheets("NomDeLaFeuille")
.Range("G1:G" & DerLG).name = "ZN"
End With
Dans ta ligne de code :
Set zn = Range("G1:G" & derLG)
ZN est un objet "Range" et non une plage nommée
L'expression "SET" s'emploie seulement pour définir des objets comme
"Range", "Worksheet", "Workbook", etc. Ces variables sont définies comme
Dim ZN As range
Dim Sh as Worksheet
dim Wk as Workbook
**** Cette ligne de code utilise une plage nommée.
A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)")
mais il m'indique "Erreur 1004". Juste avant le WE.
Dim derLG As Integer Set zn = Range("G1:G" & derLG)
**** Dans ta procédure, je ne vois pas où tu as attribué une valeur à derLG, par conséquent elle est 0 puisque tu la variable a le type Integer. Range("G1:G0") ne se peut pas, il n'y a pas de ligne 0 dans une feuille de calcul d'où ton erreur. ZN est le NOM d'une plage nommée dans la feuille de calcul. Une manière rapide de faire cela : With worksheets("NomDeLaFeuille") .Range("G1:G" & DerLG).name = "ZN" End With Dans ta ligne de code : Set zn = Range("G1:G" & derLG) ZN est un objet "Range" et non une plage nommée L'expression "SET" s'emploie seulement pour définir des objets comme "Range", "Worksheet", "Workbook", etc. Ces variables sont définies comme Dim ZN As range Dim Sh as Worksheet dim Wk as Workbook **** Cette ligne de code utilise une plage nommée.
A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)")
MichD
Jacquouille
Re Errare Humanum est ! derLG = Cells(Cells.Rows.Count, 7).End(xlUp).Row était restée coincée dans les poils de la souris. Cela fonctionne tellement mieux comme cela. Encore merci et 1001 excuses pour cet oubli impardonnable. pour me punir, je ne prendrai qu'un seul verre d'apéro. Jacques " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : qbom91$14sc$ mais il m'indique "Erreur 1004". Juste avant le WE.
Dim derLG As Integer Set zn = Range("G1:G" & derLG)
**** Dans ta procédure, je ne vois pas où tu as attribué une valeur à derLG, par conséquent elle est 0 puisque tu la variable a le type Integer. Range("G1:G0") ne se peut pas, il n'y a pas de ligne 0 dans une feuille de calcul d'où ton erreur. ZN est le NOM d'une plage nommée dans la feuille de calcul. Une manière rapide de faire cela : With worksheets("NomDeLaFeuille") .Range("G1:G" & DerLG).name = "ZN" End With Dans ta ligne de code : Set zn = Range("G1:G" & derLG) ZN est un objet "Range" et non une plage nommée L'expression "SET" s'emploie seulement pour définir des objets comme "Range", "Worksheet", "Workbook", etc. Ces variables sont définies comme Dim ZN As range Dim Sh as Worksheet dim Wk as Workbook **** Cette ligne de code utilise une plage nommée.
A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)")
MichD
Re
Errare Humanum est !
derLG = Cells(Cells.Rows.Count, 7).End(xlUp).Row était restée coincée
dans les poils de la souris.
Cela fonctionne tellement mieux comme cela.
Encore merci et 1001 excuses pour cet oubli impardonnable.
pour me punir, je ne prendrai qu'un seul verre d'apéro.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
qbom91$14sc$1@gioia.aioe.org...
mais il m'indique "Erreur 1004". Juste avant le WE.
Dim derLG As Integer
Set zn = Range("G1:G" & derLG)
**** Dans ta procédure, je ne vois pas où tu as attribué une valeur à
derLG, par conséquent elle est 0 puisque tu la variable a le type
Integer. Range("G1:G0") ne se peut pas, il n'y a pas de ligne 0 dans une
feuille de calcul d'où ton erreur.
ZN est le NOM d'une plage nommée dans la feuille de calcul. Une manière
rapide de faire cela :
With worksheets("NomDeLaFeuille")
.Range("G1:G" & DerLG).name = "ZN"
End With
Dans ta ligne de code :
Set zn = Range("G1:G" & derLG)
ZN est un objet "Range" et non une plage nommée
L'expression "SET" s'emploie seulement pour définir des objets comme
"Range", "Worksheet", "Workbook", etc. Ces variables sont définies comme
Dim ZN As range
Dim Sh as Worksheet
dim Wk as Workbook
**** Cette ligne de code utilise une plage nommée.
A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)")
Re Errare Humanum est ! derLG = Cells(Cells.Rows.Count, 7).End(xlUp).Row était restée coincée dans les poils de la souris. Cela fonctionne tellement mieux comme cela. Encore merci et 1001 excuses pour cet oubli impardonnable. pour me punir, je ne prendrai qu'un seul verre d'apéro. Jacques " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : qbom91$14sc$ mais il m'indique "Erreur 1004". Juste avant le WE.
Dim derLG As Integer Set zn = Range("G1:G" & derLG)
**** Dans ta procédure, je ne vois pas où tu as attribué une valeur à derLG, par conséquent elle est 0 puisque tu la variable a le type Integer. Range("G1:G0") ne se peut pas, il n'y a pas de ligne 0 dans une feuille de calcul d'où ton erreur. ZN est le NOM d'une plage nommée dans la feuille de calcul. Une manière rapide de faire cela : With worksheets("NomDeLaFeuille") .Range("G1:G" & DerLG).name = "ZN" End With Dans ta ligne de code : Set zn = Range("G1:G" & derLG) ZN est un objet "Range" et non une plage nommée L'expression "SET" s'emploie seulement pour définir des objets comme "Range", "Worksheet", "Workbook", etc. Ces variables sont définies comme Dim ZN As range Dim Sh as Worksheet dim Wk as Workbook **** Cette ligne de code utilise une plage nommée.
A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)")
MichD
MichD
pour me punir, je ne prendrai qu'un seul verre d'apéro.
**** Au petit-déjeuner? ;-) MichD
pour me punir, je ne prendrai qu'un seul verre d'apéro.
pour me punir, je ne prendrai qu'un seul verre d'apéro.
**** Au petit-déjeuner? ;-) MichD
Jacquouille
"MichD" a écrit dans le message de groupe de discussion : qbon5e$1866$
pour me punir, je ne prendrai qu'un seul verre d'apéro.
**** Au petit-déjeuner? ;-) -------------------------------------- A vaincre sans péril, il n'y a pas de gloire. En plus, il était 12:35 hr au moment où j'ai écrit ce msg. Pour dessert, voici le résultat. Est-ce bon, ou pas, et comment, de remettre les var à zéro à chaque démarrage? ------------------- Sub Maxim() 'On Error Resume Next Dim zn As Range Dim A As Long ' retourne la ligne de la plus grande valeur Dim B As String 'Contient l'adresse de la valeur Dim n As Long ' retourne le Max de zn Dim derLD As Integer Dim derLG As Integer derLD = Cells(Cells.Rows.Count, 4).End(xlUp).Row derLG = Cells(Cells.Rows.Count, 7).End(xlUp).Row With Worksheets("Feuil1") .Range("G1:G" & derLG).Name = "zn" End With Range("zn").Interior.ColorIndex = xlnonne 'on nettoye tout n = Evaluate("max(zn)") For Each c In Range("zn") If [c] = n Then c.Interior.ColorIndex = 45 Range("D" & derLD + 1).Value = c.Address End If Next derLD = derLD + 1 A = [MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)] 'A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)") B = Cells(A, Range("zn").Column).Address ' et enfin, l'affichage: Range("D" & derLD + 1).Value = B Cells(A, Range("zn").Column).Interior.ColorIndex = 4 End Sub --------------------------- Dans : derLD = Cells(Cells.Rows.Count, 4).End(xlUp).Row peut-on remplacer le 4 par colonne(D) ou un truc du genre????? Compter jusque 4, ça va, mais à la centième colonne ..... ----------------------------- Bon WE et merci MichD
"MichD" a écrit dans le message de groupe de discussion :
qbon5e$1866$1@gioia.aioe.org...
pour me punir, je ne prendrai qu'un seul verre d'apéro.
**** Au petit-déjeuner? ;-)
--------------------------------------
A vaincre sans péril, il n'y a pas de gloire.
En plus, il était 12:35 hr au moment où j'ai écrit ce msg.
Pour dessert, voici le résultat.
Est-ce bon, ou pas, et comment, de remettre les var à zéro à chaque
démarrage?
-------------------
Sub Maxim()
'On Error Resume Next
Dim zn As Range
Dim A As Long ' retourne la ligne de la plus grande valeur
Dim B As String 'Contient l'adresse de la valeur
Dim n As Long ' retourne le Max de zn
Dim derLD As Integer
Dim derLG As Integer
With Worksheets("Feuil1")
.Range("G1:G" & derLG).Name = "zn"
End With
Range("zn").Interior.ColorIndex = xlnonne 'on nettoye tout
n = Evaluate("max(zn)")
For Each c In Range("zn")
If [c] = n Then
c.Interior.ColorIndex = 45
Range("D" & derLD + 1).Value = c.Address
End If
Next
derLD = derLD + 1
A = [MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)]
'A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)")
B = Cells(A, Range("zn").Column).Address
' et enfin, l'affichage:
Range("D" & derLD + 1).Value = B
Cells(A, Range("zn").Column).Interior.ColorIndex = 4
End Sub
---------------------------
Dans : derLD = Cells(Cells.Rows.Count, 4).End(xlUp).Row
peut-on remplacer le 4 par colonne(D) ou un truc du genre?????
Compter jusque 4, ça va, mais à la centième colonne .....
-----------------------------
Bon WE et merci
MichD
"MichD" a écrit dans le message de groupe de discussion : qbon5e$1866$
pour me punir, je ne prendrai qu'un seul verre d'apéro.
**** Au petit-déjeuner? ;-) -------------------------------------- A vaincre sans péril, il n'y a pas de gloire. En plus, il était 12:35 hr au moment où j'ai écrit ce msg. Pour dessert, voici le résultat. Est-ce bon, ou pas, et comment, de remettre les var à zéro à chaque démarrage? ------------------- Sub Maxim() 'On Error Resume Next Dim zn As Range Dim A As Long ' retourne la ligne de la plus grande valeur Dim B As String 'Contient l'adresse de la valeur Dim n As Long ' retourne le Max de zn Dim derLD As Integer Dim derLG As Integer derLD = Cells(Cells.Rows.Count, 4).End(xlUp).Row derLG = Cells(Cells.Rows.Count, 7).End(xlUp).Row With Worksheets("Feuil1") .Range("G1:G" & derLG).Name = "zn" End With Range("zn").Interior.ColorIndex = xlnonne 'on nettoye tout n = Evaluate("max(zn)") For Each c In Range("zn") If [c] = n Then c.Interior.ColorIndex = 45 Range("D" & derLD + 1).Value = c.Address End If Next derLD = derLD + 1 A = [MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)] 'A = Evaluate("MATCH(MAX(RIGHT(zn,2)*1),RIGHT(zn,2)*1,0)") B = Cells(A, Range("zn").Column).Address ' et enfin, l'affichage: Range("D" & derLD + 1).Value = B Cells(A, Range("zn").Column).Interior.ColorIndex = 4 End Sub --------------------------- Dans : derLD = Cells(Cells.Rows.Count, 4).End(xlUp).Row peut-on remplacer le 4 par colonne(D) ou un truc du genre????? Compter jusque 4, ça va, mais à la centième colonne ..... ----------------------------- Bon WE et merci MichD
Geo
Bonjour
En plus, il était 12:35 hr au moment où j'ai écrit ce msg.
Tu as oublié le décalage horaire, actuellement 6h ou 7h entre la Belgique et le Québec ?
Bonjour
En plus, il était 12:35 hr au moment où j'ai écrit ce msg.
Tu as oublié le décalage horaire, actuellement 6h ou 7h entre la
Belgique et le Québec ?
En plus, il était 12:35 hr au moment où j'ai écrit ce msg.
Tu as oublié le décalage horaire, actuellement 6h ou 7h entre la Belgique et le Québec ?
MichD
Est-ce bon, ou pas, et comment, de remettre les var à zéro à chaque démarrage?
Quand tu prends le temps de déclarer des variables "LOCALES" c'est-à-dire déclarer au niveau de la procédure, la variable prend la valeur par défaut. Dim S as Integer OU Long OU Double OU Currency Par défaut la valeur S vaut 0 et ce, à chaque exécution de la procédure Dim T as string t = "" par défaut dim V as variant La variable V prend le type selon la donnée que tu lui as affectée. Cependant, lorsque tu déclares les variables dans le haut d'un module, la valeur attribuée à la variable demeure jusqu'au moment où tu la changes volontairement ou pas. Exemple : dans un module standard ou dans un module Feuille Dans le haut du module : Dim P as Long '----------------- Sub test() P = P + 1 End Sub '----------------- La valeur P s'incrémente à chaque fois que tu exécutes la procédure Test. Une variable "Public" se déclare dans un module standard et elle est reconnue partout dans le code avec Dim , la variable déclarée n'est valide que dans le module où elle a été déclarée. MichD
Est-ce bon, ou pas, et comment, de remettre les var à zéro à chaque
démarrage?
Quand tu prends le temps de déclarer des variables "LOCALES"
c'est-à-dire déclarer au niveau de la procédure, la variable prend la
valeur par défaut.
Dim S as Integer OU Long OU Double OU Currency
Par défaut la valeur S vaut 0 et ce, à chaque exécution de la procédure
Dim T as string
t = "" par défaut
dim V as variant
La variable V prend le type selon la donnée que tu lui as affectée.
Cependant, lorsque tu déclares les variables dans le haut d'un module,
la valeur attribuée à la variable demeure jusqu'au moment où tu la
changes volontairement ou pas.
Exemple : dans un module standard ou dans un module Feuille
Dans le haut du module :
Dim P as Long
'-----------------
Sub test()
P = P + 1
End Sub
'-----------------
La valeur P s'incrémente à chaque fois que tu exécutes la procédure Test.
Une variable "Public" se déclare dans un module standard et elle est
reconnue partout dans le code
avec Dim , la variable déclarée n'est valide que dans le module où elle
a été déclarée.
Est-ce bon, ou pas, et comment, de remettre les var à zéro à chaque démarrage?
Quand tu prends le temps de déclarer des variables "LOCALES" c'est-à-dire déclarer au niveau de la procédure, la variable prend la valeur par défaut. Dim S as Integer OU Long OU Double OU Currency Par défaut la valeur S vaut 0 et ce, à chaque exécution de la procédure Dim T as string t = "" par défaut dim V as variant La variable V prend le type selon la donnée que tu lui as affectée. Cependant, lorsque tu déclares les variables dans le haut d'un module, la valeur attribuée à la variable demeure jusqu'au moment où tu la changes volontairement ou pas. Exemple : dans un module standard ou dans un module Feuille Dans le haut du module : Dim P as Long '----------------- Sub test() P = P + 1 End Sub '----------------- La valeur P s'incrémente à chaque fois que tu exécutes la procédure Test. Une variable "Public" se déclare dans un module standard et elle est reconnue partout dans le code avec Dim , la variable déclarée n'est valide que dans le module où elle a été déclarée. MichD
MichD
Le 18/05/19 à 09:41, Geo a écrit :
Bonjour
En plus, il était 12:35 hr au moment où j'ai écrit ce msg.
Tu as oublié le décalage horaire, actuellement 6h ou 7h entre la Belgique et le Québec ?
Bonjour Geo, Décalage horaire entre le Québec et la Belgique : 6 h Décalage horaire entre l'ouest (Colombie-Britannique) et l'est du Canada (Terre-Neuve) : 5 h. MichD
Le 18/05/19 à 09:41, Geo a écrit :
Bonjour
En plus, il était 12:35 hr au moment où j'ai écrit ce msg.
Tu as oublié le décalage horaire, actuellement 6h ou 7h entre la
Belgique et le Québec ?
Bonjour Geo,
Décalage horaire entre le Québec et la Belgique : 6 h
Décalage horaire entre l'ouest (Colombie-Britannique) et l'est du Canada
(Terre-Neuve) : 5 h.
En plus, il était 12:35 hr au moment où j'ai écrit ce msg.
Tu as oublié le décalage horaire, actuellement 6h ou 7h entre la Belgique et le Québec ?
Bonjour Geo, Décalage horaire entre le Québec et la Belgique : 6 h Décalage horaire entre l'ouest (Colombie-Britannique) et l'est du Canada (Terre-Neuve) : 5 h. MichD