> Tous les forums > Forum Bureautique
 macro vba valeur maximaleSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
WINNIE0931
  Posté le 28/01/2014 @ 15:56 
Aller en bas de la page 
Petit astucien

Bonjour à tous

La colonne A (identifiant) du classeur dont je joins le lien contient des doublons . j'ai numéroté chaque occurence de chaque doublon dans la colonne numéro d'ordre, en leur attribuant un numéro de ligne.

je souhaiterais à partir d'une macro en VBA , repérer pour chaque identifiant le numéro d'ordre ayant la plus grande valeur, ou en colorisant la cellule dans la colonne C, ou en ajoutant un indicateur ici une x, dans une colonne à droite.

J'ai volontairement fait le travail "à la main en colorisant en jaune" les valeurs les plus élevées ou en mettant la X.

J'ai trouvé sur le net des macros à cet effet qui copient dans une autre feuille les lignes contenant la valeur maximale pour chaque doublon, mais je souhaiterais effectuer ce traitement sur la feuille source.

http://cjoint.com/?DACpUS018BE

je suis novice en vba.

Je vous remercie de votre aide.

Bonne journée à tous.

Publicité
poussebois
 Posté le 28/01/2014 à 16:34 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Bonjour ,

Est-ce que les "doublons" sont toujours consécutifs comme cela est sur ton exemple ?

c-à-d peux t-on retrouver un "233" en A26 par exemple ?

A quoi sert la colonne "Etapes" ? Faut-il aussi la remplir ?

@ +

WINNIE0931
 Posté le 28/01/2014 à 16:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour Poussebois,

Effectivement les doublons sont consécutifs car le fichier est trié à la base par la colonne A.

La colonne étapes doit rester en l'état ; le "repérage" de la valeur la plus forte du numéro d'ordre pour chaque identifiant doit s'effectuer en colorisant les cellules concernées de la colonne C ou alors par un marqueur comme une X dans la colonne D.

Un grand merci ! Bonne fin de journée.

ferrand
 Posté le 28/01/2014 à 19:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonsoir,

Tu peux obtenir le même résultat avec des formules :

En C2 : =NB.SI($A$2:A2;A2) à tirer sur la colonne

En D2 : =SI(A3<>A2;"x";"") à tirer sur la colonne

Pour en plus colorer en jaune les "max" de C, une MFC basée sur les "x" de la colonne D.

http://cjoint.com/?DACtdMjNnB5

WINNIE0931
 Posté le 28/01/2014 à 19:13 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir Ferrand et merci.

Effectivement, on peux tout à fait le faire par formule.

Simplement j'aurais aimé le faire par VBA en collant le code dans une macro déjà existante pour éviter une saisie manuelle de formule.

mon fichier fait en fait 9000 lignes mais je peux tout-à-fait incrémenter les formules et la MFC.

Au pire des cas, je ferais appel effectivement à ta solution.

En tout cas merci de ta disponibilité.

Bonne soirée.

ferrand
 Posté le 29/01/2014 à 00:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

j'aurais aimé le faire par VBA en collant le code dans une macro déjà existante pour éviter une saisie manuelle de formule.

Tel que tu as posé la question, il ne me paraissait pas très intéressant de bâtir une macro pour cet usage.

Si le problème est en fait plus large, il faut voir dans le nouveau contexte...

Donne un peu plus de détails sur les tenants et aboutissants, et sur la macro existante (ce qu'elle fait et comment elle est lancée), on reverra les réponses...

WINNIE0931
 Posté le 29/01/2014 à 08:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour Ferrand,

J'ai vu que tu avais travaillé tard dans la soirée vue l'heure de ton post et je t'en remercie.

Effectivement ma demande peut s'inscrire à la suite d'une macro existante.

Cete dernière attribue des numéros d'ordres à chaque doublon de la colonne "identifiant".

Je reposte une autre version du classeur avec le code VBA dans le module du classeur.

http://cjoint.com/?DADiWBwm5VW

par contre un détail, pour que la macro fonctionne, la colonne où il y a les doublon ne doit pas être en colonne A mais au moins au colonne B, c'est pour cela que j'ai déplacé la colonne identifiant en B

La macro s'exécute sur la feuille "Feuil2 copie"

Le but est ensuite de répérer par VBA comme tu me l'as gentiment montré par formule, le numéro d'ordre maxi pour chaque identifiant, soit en le colorisant, soit avec un marqueur dans la colonne immédiatement à droite du numéro d'ordre, de type cell.Offset(, 1).value ="x".

Encore un grand merci et bonne journée.

WINNIE0931
 Posté le 29/01/2014 à 09:01 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Re bonjour Ferrand, je pense que le code ne figure pas dans le classeur que je viens de poster.

le voici ci-dessous à placer dans le module du classeur : encore merci.

Sub A_Identifiantdoublons()
Sheets("Feuil2 copie").Select
Set mondico = CreateObject("Scripting.Dictionary")
Set mondico2 = CreateObject("Scripting.Dictionary")
i = 1
For Each c In Range([b2], [b65000].End(xlUp))
temp = c.Value & c.Offset(, 1).Value
If Not mondico.exists(temp) Then
mondico(temp) = i
i = i + 1
End If
c.Offset(, 1) = Format(mondico.Item(temp), "0000")
mondico2(temp) = mondico2(temp) + 1
c.Offset(, 2) = Format(mondico.Item(temp), "0000") & "-" & mondico2(temp)
Next c
Range("c1").Select
ActiveCell.FormulaR1C1 = "Numéro ordre"

Columns("d:d").Select
Selection.Delete Shift:=xlToLeft

End Sub

ferrand
 Posté le 29/01/2014 à 10:48 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Un truc me chiffonne, c'est la façon dont se présente le tableau à traiter après saisie et avant traitement.

Je déduis de tes différents posts qu'il se présente avec 2 colonnes : Identifiant et Etapes.

Tu dis qu'il est trié sur la colonne Identifiant. Dans ton modèle ce n'est pas le cas, si les identifiants sont regroupés, ils ne sont ni dans un ordre ascendant ni dans un ordre descendant.

La question 1 est donc : à l'issue de la saisie, est-ce que les identifiants se présentent en désordre ? Et faut-il les trier ? [Tri qui peut parfaitement être intégré au traitement.] Et dans quel ordre ? (Et les identifiants se présentent-ils toujours sous cette forme de données numériques ?)

La question 2 : est-ce les étapes sont saisies en même temps que les identifiants ? Et toujours sous la forme étapes 1, 2, 3, ... ? (Ce qui paraît redondant avec l'attribution d'un numéro d'ordre distinguant les saisies d'un même identifiant).

Et je ne comprends plus les nouveaux numéros d'ordre de la feuille copie qui sont, eux, l'attribution d'un numéro à chaque identifiant !

Je réserve mon avis en attendant la clarification de ces questions, car s'il y a une macro, elle doit une fois la saisie effectuée mettre le tableau dans l'état souhaité (sans qu'on ait une quelconque autre manipulation avant).



Modifié par ferrand le 29/01/2014 10:49
WINNIE0931
 Posté le 29/01/2014 à 13:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Ferrand, tu me vois désolé ; j'ai mis la pagaille et j'espère ne t'avoir pas fait perdre trop de ton temps.

Effectivement le classeur précédent que j'ai posté est très farfelu, suite à l'éxécution de la macro qui figure dans mon précédent message et dont le code n'était pas très fiable.

Je réponds à tes questions (mes réponses en gras) :

Je déduis de tes différents posts qu'il se présente avec 2 colonnes : Identifiant et Etapes. Tu as raison

La question 1 est donc : à l'issue de la saisie, est-ce que les identifiants se présentent en désordre ? Et faut-il les trier ? [Tri qui peut parfaitement être intégré au traitement.] Et dans quel ordre ? (Et les identifiants se présentent-ils toujours sous cette forme de données numériques ?) Les identifiants sont triés par ordre croissant mais on peut tout à fait les trier à la base dans une macro ; oui ce sont des données numériques pour l'instant mais il est question qu'une lettre soit intégrée dans l'identifiant.

La question 2 : est-ce les étapes sont saisies en même temps que les identifiants ? Et toujours sous la forme étapes 1, 2, 3, ... ? (Ce qui paraît redondant avec l'attribution d'un numéro d'ordre distinguant les saisies d'un même identifiant). Oui les étapes sont saisies en même temps que les identifiants ; ce n'est toujours pas le mot étape qui revient

Je reposte donc le classeur qui se compose de 3 onglets.

http://cjoint.com/?DADnYY9vcp7

l'onglet "énoncé" est l'original. je l'ai trié par ordre croissant des identifiants.

l'onglet "résultats attendus avec formule" correspond aux solutions que tu m'as proposées avec les formules et la MFC

l'onglet "résultats macro actuelle" est le résultat de la macro dont je copie le module ci-dessous.

J'espère avoir répondu à tes attentes et te renouvelle mes excuses.

Voici le code de la macro, si tu veux l'éxécuter.

Sub A_Identifiantdoublons()

Application.DisplayAlerts = False 'si tu as envie de lancer la macro, suppression de la feuille "résultats macro actuelle" si elle existe
For Each X In Sheets
If X.Name = "résultats macro actuelle" Then X.Delete
Next
Application.DisplayAlerts = True

'sélection de la feuille énoncé qui est la feuille de départ
Sheets("énoncé").Select
Sheets("énoncé").Copy After:=Sheets(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = "résultats macro actuelle"

Sheets("résultats macro actuelle").Select

Set mondico = CreateObject("Scripting.Dictionary") 'génère dans la colonne D des numéros d'ordre par identifiants sous la forme 0001-1, 0001-2 pour le 1er identifiant, 0002-1,002-2,002-3 pour le deuxième identifiant

Set mondico2 = CreateObject("Scripting.Dictionary")
i = 1
For Each c In Range([b2], [b65000].End(xlUp))
temp = c.Value & c.Offset(, 1).Value
If Not mondico.exists(temp) Then
mondico(temp) = i
i = i + 1
End If
c.Offset(, 1) = Format(mondico.Item(temp), "0000") 'en colonne c, le 1er doublon, porte le numéro 1, (8 dans l'exemple), le 2eme doublon porte le nombre 2 (11 dans l'exemple)
mondico2(temp) = mondico2(temp) + 1
c.Offset(, 2) = Format(mondico.Item(temp), "0000") & "-" & mondico2(temp)
Next c


For Each c In Range([d2], [d65000].End(xlUp))

c.Offset(, -1) = Right(c, 1) 'on récupère le chiffre de droite (valeurs possibles = de 1 à 9) et on inscrit ce chiffre qui devient le numéro d'ordre en colonne c

Next c

Range("c1").Select 'on nomme la colonne c
ActiveCell.FormulaR1C1 = "Numéro ordre"


Columns("d:d").Select 'on détruit la colonne D qui ne sert plus à rien.
Selection.Delete Shift:=xlToLeft

Range("D1").Select 'on nomme la colonne D "max de la série" en prévision du marquage du numéro d'ordre le plus fort pour chaque identifiant, si on y arrive par macro.
ActiveCell.FormulaR1C1 = "Max de la série"


Range("A1").Select 'mise en forme de la zone de titre

Selection.Copy

Range("C1:D1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

Range("A1").Select

Selection.CurrentRegion.Select 'mise en forme du tableau, alignement vertical et horizontal centré
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False

End With
Selection.CurrentRegion.Select
Selection.Columns.AutoFit
Columns("A:A").ColumnWidth = 13.57

Selection.CurrentRegion.Select
For Each cellule In Selection 'encadrement des cellules
cellule.Borders.Weight = xlThin

Next

Sheets("résultats macro actuelle").Select

Range("f2").Select 'rédaction du commentaire

ActiveCell.FormulaR1C1 = "il reste à coloriser les numéros d'ordre les plus forts ou à mettre un marqueur dans la colonne Max de la série"

With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Selection.Columns.AutoFit

Range("a1").Select
End Sub

ferrand
 Posté le 29/01/2014 à 14:16 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

OK !

Quelques courses à faire, je vois de plus près dans la soirée.

Pas eu le temps de regarder le détail de ta nouvelle macro, je verrai tout à l'heure, ça me paraît plutôt long pour ce qui est à faire (on verra).

Si la logique est de mettre la colonne Identifiants avant la colonne Etapes, je ne vois aucune nécessité pour faire l'inverse !

Si j'ai bien suivi tes précisions, le tri se fait uniquement sur la colonne Identifiants, ce qui laisse la colonne Etapes dans l'ordre d'inscription quel que soit le libellé de l'étape concernée.

A+

WINNIE0931
 Posté le 29/01/2014 à 14:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Tu as parfaitement compris et je te remercie de ton temps ; bien évidemment si tu veux reprendre ma amcro, je t'en serai reconnaissant;

Comme le le disais, je ne suis pas super performant en vba.

a bientôt.

ferrand
 Posté le 29/01/2014 à 23:37 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

WINNIE0931 a écrit :

Tu as parfaitement compris et je te remercie de ton temps ; bien évidemment si tu veux reprendre ma amcro, je t'en serai reconnaissant;

Comme le le disais, je ne suis pas super performant en vba.

Bonsoir,

C'était bien mon intention.

J'ai été un peu retardé par un problème informatique ailleurs...

Tu le deviendras ! Si c'est toi qui a écrit la macro, cela représente un bon petit exercice qui laisse penser que tu progresseras assez vite en maîtrisant le langage de programmation. Je la laisse quand même de côté car elle est conçu plus comme un exercice de démonstration dans le cadre de ta question que comme réponse opérationnelle à la question que tu poses.

Quelques remarques qui pourront peut-être t'être utiles :

• Déclarer les variables utilisées n'est pas une perte de temps, c'est une sécurité qui évite parfois des résultats imprévus et cela permet de se repérer plus facilement dans une macro lorsqu'on sait à l'avance de quel type sont les variables. Cela peut se faire assez rapidement (en tête de procédure pour les variables locales ou en tête de module pour les variables de niveau module) sous la forme Dim nomvar As type ou en utilisant pour certains type le caractère de déclaration de type (exemple : Dim a As Integer ou Dim a% sont synonymes pour déclarer une variable de type Integer, de même Dim chaine As String ou Dim chaine$ pour une variable de type String).

• Plusieurs fragments sont issus de macros enregistrées et mériteraient d'être repris pour les alléger. C'est les .Select (ou .Activate) à répétition : il est normal de les trouver dans un enregistrement qui décrit tes manipulations à la souris mais VBA n'en a nul besoin pour le même résultat et tu lui fais faire autant d'opérations supplémentaires avant d'y parvenir. C'est aussi l'énumération d'une masse de propriétés par défaut, notamment lors de mise en forme de cellules, rappelées par l'enregistreur, inutilement pour la plupart dans la mesure où tu ne les modifies pas. On peut aussi rattacher à l'enregistreur quelques autres commandes qui pourraient être ignorées dans le contexte et l'utilisation quasi systématique des arguments nommés.

Il est en général plus rapide de les faire se succéder dans le bon ordre (en tenant compte le cas échéant des arguments facultatifs qu'on n'utilise pas [on ne met rien entre les virgules correspondant au rang d'un tel argument]. Pour ma part je ne les utilise que pour les copies ou déplacements de feuilles (plus facile à lire quand on a after:= ou before:=) et pour les commandes de recherche (méthode .Find) et tri (méthode .Sort) et également les filtrages, car ce type de commande a de nombreux arguments dont certains doivent être utilisés systématiquement car leur définition reste mémorisée dans Excel pour les utilisations suivantes (alors qu'on ne souhaitera pas forcément faire la même chose).

Pour le reste, tu affineras et personnaliseras ton style à l'usage. Chacun a ses 'tics' ou préférences, au fil des procédures écrites et au gré des erreurs ou difficultés rencontrées.

Je ne vais pas m'étendre plus et vais te proposer une méthode assez classique pour ton cas...

ferrand
 Posté le 30/01/2014 à 00:37 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Suite : Je suis parti de ta feuille "énoncé" que j'ai un peu modifiée pour tests. J'ai rétabli Identifiants en A et Etapes en B, ainsi qu'une colonne Numéro d'ordre en C, et alignés la mise en forme des en-têtes en considérant que cela est fait au départ une fois pour toutes lors de la préparation de la feuille. J'ai aussi "retrié" les données saisies pour les mélanger de façon à pouvoir s'assurer du tri lors des tests. Je n'ai pas défait la mise en forme mais on verra les effets sur la colonne C...

Donc on se situe après saisie, et on lance macro qui va faire le reste.

Sub ClasserIdentifiants()
Dim i%, k%, n%, idtf$
With Worksheets(1)
n = .Range("A65000").End(xlUp).Row
.Range("A2:C" & n).Sort key1:=.Range("A2"), order1:=xlAscending, Header:=xlNo
.Range("C2:C" & n).Interior.ColorIndex = xlColorIndexNone
idtf = .Cells(2, 1).Value
k = 0
For i = 2 To n
If .Cells(i, 1).Value = idtf Then
k = k + 1
.Cells(i, 3).Value = k
Else
idtf = .Cells(i, 1).Value
k = 1
.Cells(i, 3).Value = k
.Cells(i - 1, 3).Interior.Color = RGB(255, 255, 0)
End If
Next i
.Cells(n, 3).Interior.Color = RGB(255, 255, 0)
For i = n To 2 Step -1
If .Cells(i, 3).Borders(xlEdgeRight).ColorIndex = xlColorIndexNone Then MFormCell .Cells(i, 3)
Next i
End With
End Sub

Commentaires :

- Tu la nommeras bien sûr comme tu l'entends, cela ne change rien. De même, à toi de voir le lancement après saisie (bouton, raccourci, ...)

- Déclarations de variables : 3 variables Integer, 1 variable chaîne (String). J'ai anticipé sur le fait que les identifiants deviendront des chaînes de texte. Le fait que pour l'instant ce soient des nombres n'a aucune incidence dans la mesure où on ne les utilise pas comme nombre.

- Worksheets (1) : tu peux laisser si la feuille de saisie est la première feuille du classeur, sinon mettre son nom à la place de 1. Eventuellement ActiveSheet si la macro est toujours lancée alors que cette feuille est la feuille active.

- n va servir à mémoriser le numéro de la dernière ligne de saisie. J'ai repris ta détection à partir de la ligne 65000, mais note qu'on utilisait traditionnellement 65536 (nb de lignes jusqu'à Excel 2003) mais depuis 2007 il y a plus 1 million de lignes et une nouvelle habitude se dessine pour mettre:
.Cells(.Rows.Count, 1).End(xlUp).Row en pareil cas de façon que ça s'adapte à toutes versions d'Excel.

- La ligne suivante trie le tableau sur la colonne A. Et la suivante efface les colorations jaune en C (qui existeront si on traite un fichier déjà traité après une nouvelle saisie d'éléments à la suite ; j'ai opté pour la coloration qui évite une 4e colonne...)

- On initialise ensuite itdf sur la valeur du premier identifiant en A2 et k à 0 [cette affectation est inutile puisque k non initialisé serait apprécié à la valeur 0, mais cela facilite la lecture] avant de lancer une boucle de 2 à n (i étant variable-compteur) pour tester à chaque ligne la valeur de la cellule en A : si elle correspond à itdf [ce qui est forcément le cas pour la première cellule testée] on incrémente k [ce pourquoi il devait être à 0 au départ] et on affecte la valeur de k à la cellule en C ; sinon, on réaffecte itdf [pour les tests suivants], on ramène k à 1, on affecte cette valeur à la cellule en C et on colore la cellule en C de la ligne précédente [qui avait donc atteint son numéro max pour l'identifiant précédent]. En fin de boucle, on colore la cellule en C de la ligne n car c'est nécessairement un max et elle n'a pas été colorée dans la boucle puisqu'il n'y avait pas de cellule suivante à tester.
NB- Pour la couleur, l'utilisation de la fonction RGB est plus facile et rapide, on trouve les valeurs des 3 composantes plus vite que le code.

- Ensuite partant de l'idée qu'après la première utilisation, les éléments préexistants auront été mis en forme et n'ont plus à l'être une nouvelle fois, je lance un boucle de n à 2, qui va tester en partant de la dernière ligne si la cellule en C est bordée à droite. Si elle ne l'est pas, la ligne est à mettre en forme : pour ce faire, une macro auxiliaire est lancée.

Sub MFormCell(c As Range)
Dim i%
For i = -2 To 0
With c.Offset(0, i)
With .Font
.Name = "Arial"
.Size = 9
End With
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
With .Borders
.LineStyle = xlContinuous
.Weight = xlThin
End With
End With
Next i
End Sub

La mise en forme concerne la police et sa taille, les alignements et les bordures. Si j'ai oublié quelque chose, c'est à compléter. Et si on modifie la mise en forme, une macro complémentaire sera plus facile à modifier que les même éléments dans la macro principale.

Je crois que j'ai fait le tour.

ferrand
 Posté le 30/01/2014 à 00:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

J'ai failli oublier : http://cjoint.com/?DAEaNnYtAEP

WINNIE0931
 Posté le 30/01/2014 à 07:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour Ferrand,

Eh bien que te dire ! un grand merci pour ton temps mais également pour tes explications et tes conseils.

Je vais regarder tes explications tranquilement.

Je suis un passionné d'excel et je me suis mis au VBA depuis peu mais de manière autodidacte et c'est bien le problème ; au départ copier coller de codes sur internet, enregistreur de macros et une petite marge d'autonomie depuis peu.

Puis je abuser de ta gentillesse en me recommandant un ouvrage ou un site internet pour apréhender le VBA avec méthode ?

comme on prend vite goût aux bonnes choses, je pense que je reviendrai assez rapidement sur le forum.

Au plaisir peut être d'échanger avec toi.

En tout cas encore merci ;

Bonne journée.

ferrand
 Posté le 01/02/2014 à 13:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Puis je abuser de ta gentillesse en me recommandant un ouvrage ou un site internet pour apréhender le VBA avec méthode ?

Tu trouveras pas mal de sites dédiés à Excel et VBA en faisant quelques recherches au gré de tes besoins. Tu m'excuseras de n'être pas revenu rapidement mais il m'a fallu un délai pour pouvoir fouiller dans mes archives...

Pour avoir une vue d'ensemble de la programmation VBA : ftp://ftp-developpez.com/bidou/Cours/VBA/formationVBA.pdf

(je mets le lien direct car je ne suis pas parvenu à le retrouver en naviguant sur le site (développez.com) (!) ; je n'ai pu trouver qu'un article plus récent du même auteur). Je te le joins aussi : http://bidou.ftp-developpez.com/Cours/VB/VB-excel2.pdf

N'oublie pas l'utilité de l'aide dans l'éditeur VBA : on a régulièrement besoin en cours de programmation de vérifier des propriétés et méthodes d'un objet, une syntaxe d'appel, etc. et c'est souvent le moyen le plus rapide.

Egalement bien sûr : http://boisgontierjacques.free.fr/index.htm

Cela n'est pas limitatif, il y a de nombreux sites intéressants, sur lesquels tu tomberas lors de recherches ciblées sur tel ou tel aspect.

Bonne continuation.

WINNIE0931
 Posté le 01/02/2014 à 14:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour Ferrand.

Un grand merci.

je vais me plonger dans les sites que tu m'as gentiment indiqués.

a bientôt.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
29,99 €Chargeur rapide USB-C Anker Nano II 45W à 29,99 €
Valable jusqu'au 25 Mai

Amazon propose le chargeur USB-C Anker Nano II 45W à 29,99 € au lieu de 36 € grâce à un coupon de réduction à activer sur la page du produit. Ce chargeur vous offre la puissance dont vous avez besoin pour charger rapidement (compatible Super Fast Charging) votre téléphone, votre tablette et votre ordinateur portable USB C.  

Le chargeur Anker Nano II est 34 % plus petit qu'un chargeur USB-C de 45W standard et grâce à sa fiche pliable, il prend moins de place tout en vous offrant autant de puissance.

Notez que la version 65W est également en promotion à 39,99 € au lieu de 49,99 €.


> Voir l'offre
34,99 €Intégrale Downtown Abbey édition prestige en Blu-ray à 34,99 €
Valable jusqu'au 25 Mai

Amazon fait une promotion sur l'intégrale Downtown Abbey édition prestige en Blu-ray à 34,99 € au lieu de 48,01 €. Elle contient les saisons 1 à 6 de la série ainsi que le film.


> Voir l'offre
429,00 €Caméra sportive GoPro HERO10 Black à 429 €
Valable jusqu'au 26 Mai

Amazon fait une promotion sur la caméra sportive GoPro Hero 10 Black qui passe à 429 € au lieu de 499,99 €. Nouveau processeur, vidéos 5.3K/60p et 4K/120p, stabilisation HyperSmooth 4.0, la GoPro HERO10 Black suivra vos aventures et vos exploits ! Retrouvez également une conception robuste et étanche, de nombreux modes disponibles, une fonction webcam et LiveStream.


> Voir l'offre

Sujets relatifs
Excel: Chercher l'emplacement de la valeur maximale dans une plage
Créer une macro qui recopie une valeur
Afficher une valeur associée à une valeur maximale
declancher une macro quand je rentre une valeur
Macro/Script pour barrer une valeur ?
2 pages par feuille dans macro excel
Effacer cellule par rapport a la valeur d'une autre
erreur macro
Recopie cellule par macro
calculer la perte d'une valeur
Plus de sujets relatifs à macro vba valeur maximale
 > Tous les forums > Forum Bureautique