Max in array ou new collection
Bonjour, j'essaie d'améliorer une macro que j'avais faite et je sèche dans la recherche et l'exécution de solution, je suis un noob en VBA
c'est une macro d'édition d'étiquettes pour liste d'équalisage, je vous met le bout de code qui me pose problème
Je joins le fichier vierge avec lequel je me bat ci cela peut aider à suivre ma logique^^
Merci d'avance
'Déclaration variable pour récupérer le nombre de colis
Dim colis As Integer
Dim nbcolis As Integer
Dim pal() As New Collection '
colis = 0
nbcolis = 0
'Récupération nom des feuilles
Dim nomfeuille As Variant
Dim FeuilCopier As Worksheet 'Onglet qui sera à copier
Dim ongletDest As Worksheet 'Onglet de destination de la copie
Set ongletDest = Worksheets("Liste Colis & Destinataires")
'1 - on copie la leuille de féférence et la renome
Worksheets("Liste Colis & Destinataires").Copy Before:=Worksheets("Vierge avec Taille de Cellules") 'copie et positionnement de la copie
ActiveSheet.Name = "Liste d'équalisage" 'Renomme la feuille
'2 - on récupère le nombre de colis
For Each nomfeuille In ThisWorkbook.Worksheets
Set FeuilCopier = Worksheets(nomfeuille.Name)
ongletDest.Activate 'action sur feuille active
pal.Add = FeuilCopier.Range("B,10") ' n° de colis
pal.Add = FeuilCopier.Range("B,28") ' n° de colis
pal.Add FeuilCopier.Range("R,10") ' n° de colis
pal.Add FeuilCopier.Range("R,28") ' n° de colis
'result = WorksheetFunction.Max(A, B, C, D)
'nbcolis = colis + 1
If nomfeuille.Name = "Liste d'équalisage" Then Exit For 'condition de fin de la boucle for each
Next nomfeuille 'autrement reprend la boucle
nbcolis = pal.Max
MsgBox nbcolis
Bonjour AOBI et
Quelle est votre problématique exactement
Le code donné ne figure pas dans le fichier....
@+
ci il est dans l'userform1 sur le bouton enregistrement
vu que le nombre d'étiquette peut être aléatoire à chaque utilisation
dans la macro pour que la boucle fonctionne faut récupérer le dernier colis en gros la vision que j'ai
array(2,1,1,3,5,8,7,6)
les étiquettes peuvent se trouver d'une dans le désordre
mon problème est que ne trouve pas comment mettre dans dans le array ou la fonction .new collection des contenues de cellules
j'ai beau chercher je sèche sur la méthode max
pour avoir le dernier colis en état ci dessus c'est 8
mon fichier d'édition d'étiquette fonctionne dans une grosse partie + étiquette et l'édition fonctionne de celles ci fonctionnent
après j'essaie d'automatiser pour rendre plus facile d'utilisation
personne pour m'aider ^^
comment insérer le contenu de cellules dans une fonction array ou new collection
es ce que c'est possible ou pas de cette manière
merci
j'ai beau chercher des model j'en trouve pas
Bonjour à tous,
Pour la fonction Max, il faut l'utiliser sur un array. Voici un essai :
'Déclaration variable pour récupérer le nombre de colis
Dim nomfeuille As Variant
Dim ws As Worksheet 'Onglet qui sera à copier
dim ongletDest As Worksheet 'Onglet de destination de la copie
Dim colis As Integer
Dim nbcolis As Integer
Dim pal()
colis = 0
nbcolis = 0
Set ongletDest = Worksheets("Liste Colis & Destinataires")
'1 - on copie la leuille de féférence et la renome
Worksheets("Liste Colis & Destinataires").Copy Before:=Worksheets("Vierge avec Taille de Cellules") 'copie et positionnement de la copie
ActiveSheet.Name = "Liste d'équalisage" 'Renomme la feuille
'2 - on récupère le nombre de colis
For Each ws In ThisWorkbook.Worksheets
n = n + 1
redim preserve pal(1 to 4, 1 to n)
pal(1, n) = ws.Range("B10") ' n° de colis
pal(2, n) = ws.Range("B28") ' n° de colis
pal(3, n) = ws.Range("R10") ' n° de colis
pal(4, n) = ws.Range("R28") ' n° de colis
If ws.Name = "Liste d'équalisage" Then Exit For 'condition de fin de la boucle for each
Next ws 'autrement reprend la boucle
nbcolis = application.Max(pal)
MsgBox nbcolis
Cdlt,
Bonjour, je partais sur une autre solution en me servant d'un transfère sur la feuille de destinataires et récupérer la plage par la suite
Merci je vais continuer mon contournement et je vais comparer ton point de vue aussi
par contre je n'arrivais à écrire dans new collection ou array car l'itération je m'y prenais mal et pour ça Merci ^^