Recherche d'un maximum et d'un minimum

Viv

XLDnaute Nouveau
Bonjour,
J'etudie les vibrations d'un signal, et je souhaiterais ecrire une macro me permettant de calculer directement l'amplitude des vibrations. Il s'agit ainsi de trouver le minimum de la vibration et son maximum et d'en faire la difference, mais je ne sais pas comment les trouver automatiquement. En effet, on ne peut pas utiliser simplement les fonctions min et max car elles donneraient l'amplitude du signal et non l'amplitude de la vibration.

Si vous avez une petite idee, je vous en serais bien reconnaissant.

Je vous joins en annexe les donnees que j'etudie.

Merci
 

Pièces jointes

  • vibrations.xls
    19 KB · Affichages: 82
  • vibrations.xls
    19 KB · Affichages: 80
  • vibrations.xls
    19 KB · Affichages: 84

ODVJ

XLDnaute Impliqué
Re : Recherche d'un maximum et d'un minimum

Bonsoir,

les écarts sont glissants parce qu'ils se calculent sur un intervalle qui a une amplitude (17 ou 20), qui est soit centré sur chaque mesure (ex : 8 au dessus + 8 en dessous pour l'amplitude 17), soit à Droite (c'est-à-dire à partir de la mesure) soit à gauche (donc avant).
Les notions "centré " ou "à droite" viennent de là.
Les amplitudes et les tentatives à droite ou au centre sont heuristico-nasales.

le V_corrigé est là pour cumuler les mesures montantes en une seule (idem pour les descendantes).
Tes mesures sont en effet souvent multiples dans ces phases monotones.
Or tes vibrations se calculent sur les mesures qui limitent ces phases.
Ces phases s'identifient avec le changement de signe de la dérivée puisque ta dérivée étant "à gauche" pour une mesure, te fournit la dérivée à droite en prenant la dérivée de la mesure suivante. Ces mesures qui ont des dérivées droite/gauche de signes opposés sont des maxi ou des mini locaux.

Reste à savoir sur quelle longueur tu veux apprécier la localité d'un maxi ou d'un mini. C'est là que j'ai utilisé le côté glissant des max/min/écart à droite ou centré

zone_vibratoire_17 considère qu'à partir de 6 changement de signe de la dérivée sur 17 mesures centrées il y a vibration et il est intéressant de mesurer les écarts mini/maxi.

Delta est peut-être intéressante car elle fournit une autre approche que celle des dérivées mais ne s'applique qu'en zone vibratoire. Il faut donc que cette zone soit fiable.
Sinon, il va considérer les mouvements sinusoïdaux comme une grande vibration!

les résultats S1:U2 correspondent à l'approche "dérivée".
il s'agit de mesurer la descente à droite et la montée à gauche, et réciproquement.
l'amplitude centrée est là pour les cas particuliers où la dérivée est maxi et la mesure est à l'intérieur d'une phase monotone.

Pour l'automatisation par macro, je ne sais pas trop.... s'il te suffit simplement de récupérer les résultats et de les coller dans une autre feuille, c'est simple mais ça veut dire que tu as une feuille de mesure lourde.
Si tu récupères une feuille de mesures, tu peux automatiser la création des formules, des résultats puis la recopie ailleurs.
Si tu veux tout faire par macro sans passer par la feuille de calcul, là il faut s'appeler CHTI160.

A+
 

Viv

XLDnaute Nouveau
Re : Recherche d'un maximum et d'un minimum

Merci beaucoup, c genial

J'ai vraiment bien compris maintenant, a ton avis quelle serait finalement l'amplitude la plus pertinente a conserver? Tu as bien raison avec le Delta, ton etude avec 9.5 V montre qu'on ne peut pas toujours confier en lui.

Cote macro, le plan est le suivant, j'aurais 30 feuilles avec le meme type de donnees que l on vient d etudie, toutes dans un meme fichier excel. Il s'agit alors de recuperer pour chacune l'amplitude des vibrations et les recopier dans une 31eme feuille dans un tableau (5.6)

Cordialement,

Vivien
 

ODVJ

XLDnaute Impliqué
Re : Recherche d'un maximum et d'un minimum

Bonjour,

1) un complément pédagogiquement visuel pour comprendre l'intérêt du V_corrigée :
fais un filtre sur V_corrigée non nulle ou, ce qui revient au même, sur D_gche_Ddte =1.
la représentation graphique se transforme et les vibrations apparaissent plus clairement, sous forme d'un segment ascendant suivi d'un segment descendant etc...

2) pour la macro, il suffit de boucler sur les feuilles du classeur, de recopier le système de formule sur chaque feuille, de récupérer les résultats pour les installer sur la feuille 31(Récap) et de passer à la feuille suivante.
la structure d'une feuille de mesure doit être :
  • col A le temps,
  • col B le voltage
  • les mesures commencent en ligne 2.
Code:
Dim i
Sub traite_classeur()
nb_onglet = Sheets.Count - 1
For i = 1 To nb_onglet
    Sheets(i).Select
    traite_feuille
Next
End Sub
Sub traite_feuille()
    derligne = Range("A65536").End(xlUp).Row
    Range("C1").FormulaR1C1 = "Derivate "
    Range("D1").FormulaR1C1 = "V_corrigée"
    Range("E1").FormulaR1C1 = "D_gche_Ddte"
    Range("F1").FormulaR1C1 = "zone vibratoire_17"
    Range("G1").FormulaR1C1 = "Delta"
    Range("H1").FormulaR1C1 = "Moyenne_17"
    Range("I1").FormulaR1C1 = "MAX glissant_20C"
    Range("J1").FormulaR1C1 = "MIN glissant_20C"
    Range("K1").FormulaR1C1 = "écart glissant_20C"
    Range("L1").FormulaR1C1 = "MAX glissant_20D"
    Range("M1").FormulaR1C1 = "MIN glissant_20D"
    Range("N1").FormulaR1C1 = "écart glissant_20D"
    Range("P1").FormulaR1C1 = "Max derivate "
    Range("Q1").FormulaR1C1 = "Min derivate"
    Range("R1").FormulaR1C1 = "ligne"
    Range("S1").FormulaR1C1 = "amplitude_Droite"
    Range("T1").FormulaR1C1 = "amplitude_Gauche"
    Range("U1").FormulaR1C1 = "amplitude_Centrée"
    Range("W1").FormulaR1C1 = "Max_Delta"
    Range("X1").FormulaR1C1 = "ligne"
    Range("Z1").FormulaR1C1 = "Max_écart glissant_20C"
    Range("AA1").FormulaR1C1 = "ligne"
    Range("AC1").FormulaR1C1 = "Max_écart glissant_20C"
    Range("AD1").FormulaR1C1 = "ligne"
    Range("P2").FormulaR1C1 = "=MAX(R[1]C[-13]:R[" & derligne - 2 & "]C[-13])"
    Range("Q2").FormulaR1C1 = "=MIN(R[2]C[-14]:R[" & derligne - 1 & "]C[-14])"
    Range("R2").FormulaR1C1 = "=MATCH(RC[-2]*(ABS(RC[-2])>ABS(RC[-1]))+RC[-1]*(ABS(RC[-2])<ABS(RC[-1])),R1C3:R" & derligne & "C3,0)"
    Range("S2").FormulaArray = "=ABS(INDEX(C[-17],MIN(IF(SIGN(OFFSET(R[-1]C[-17],RC[-1],1," & derligne & "))<>SIGN(OFFSET(R[-1]C[-17],RC[-1]+1,1," & derligne & ")),ROW(OFFSET(R[-1]C[-17],RC[-1],1," & derligne & ")))))-OFFSET(R[-1]C[-17],RC[-1]-1,))"
    Range("T2").FormulaArray = "=ABS(INDEX(C[-18],MAX(IF(SIGN(OFFSET(R[-1]C[-18],1,1,RC[-2]-2))<>SIGN(OFFSET(R[-1]C[-18],RC[-2]-1,1)),ROW(OFFSET(R[-1]C[-18],1,1,RC[-2]-2)))))-OFFSET(R[-1]C[-18],RC[-2]-1,))"
    Range("V1").FormulaArray = "=MIN(IF(SIGN(OFFSET(RC[-20],R[1]C[-4],1," & derligne & "))<>SIGN(OFFSET(RC[-20],R[1]C[-4]+1,1," & derligne & ")),ROW(OFFSET(RC[-20],R[1]C[-4],1," & derligne & "))))"
    Range("V2").FormulaArray = "=MAX(IF(SIGN(OFFSET(R[-1]C[-20],1,1,RC[-4]-2))<>SIGN(OFFSET(R[-1]C[-20],2,1,RC[-4]-2)),ROW(OFFSET(R[-1]C[-20],1,1,RC[-4]-2))))"
    Range("U2").FormulaR1C1 = "=IF(SIGN(OFFSET(R[-1]C[-19],RC[-3]-1,1))=SIGN(OFFSET(R[-1]C[-19],RC[-3],1)),ABS(INDEX(C[-19],R[-1]C[1])-INDEX(C[-19],RC[1])),MAX(RC[-2]:RC[-1]))"
 
    Range("W2").FormulaR1C1 = "=MAX(RC[-16]:R[" & derligne - 2 & "]C[-16])"
    Range("X2").FormulaR1C1 = "=MATCH(RC[-1],C[-17],0)"
    Range("Z2").FormulaR1C1 = "=MAX(RC[-15]:R[" & derligne - 2 & "]C[-15])"
    Range("AA2").FormulaR1C1 = "=MATCH(RC[-1],C[-16],0)"
    Range("AC2").FormulaR1C1 = "=MAX(RC[-15]:R[" & derligne - 2 & "]C[-15])"
    Range("AD2").FormulaR1C1 = "=MATCH(RC[-1],C[-16],0)"
    Range("C3").FormulaR1C1 = "=(RC[-1]-R[-1]C[-1])/(RC[-2]-R[-1]C[-2])"
    Range("C3").AutoFill Destination:=Range("C3:C11"), Type:=xlFillDefault
    Range("D2").FormulaArray = "=IF(RC[1],INDEX(C[-2],MIN(IF(R[1]C[1]:R" & derligne & "C5=1,ROW(R[1]C[-2]:R" & derligne & "C2)))),0)"
    Range("D2").AutoFill Destination:=Range("D2:D11"), Type:=xlFillDefault
    Range("E2").FormulaR1C1 = "1"
    Range("E3").FormulaR1C1 = "=(SIGN(R[1]C[-2])<>SIGN(RC[-2]))*1"
    Range("E3").AutoFill Destination:=Range("E3:E11"), Type:=xlFillDefault
    Range("F2").FormulaR1C1 = "=IF(SUM(R2C[-1]:R[8]C[-1])<=5,0,1)"
    Range("F3").FormulaR1C1 = "=IF(SUM(R2C[-1]:R[8]C[-1])<=5,0,1)"
    Range("F4").FormulaR1C1 = "=IF(SUM(R2C[-1]:R[8]C[-1])<=5,0,1)"
    Range("F5").FormulaR1C1 = "=IF(SUM(R2C[-1]:R[8]C[-1])<=5,0,1)"
    Range("F6").FormulaR1C1 = "=IF(SUM(R2C[-1]:R[8]C[-1])<=5,0,1)"
    Range("F7").FormulaR1C1 = "=IF(SUM(R2C[-1]:R[8]C[-1])<=5,0,1)"
    Range("F8").FormulaR1C1 = "=IF(SUM(R2C[-1]:R[8]C[-1])<=5,0,1)"
    Range("F9").FormulaR1C1 = "=IF(SUM(R2C[-1]:R[8]C[-1])<=5,0,1)"
    Range("F10").FormulaR1C1 = "=IF(SUM(R2C[-1]:R[8]C[-1])<=5,0,1)"
    Range("F11").FormulaR1C1 = "=IF(SUM(R[-8]C[-1]:R[8]C[-1])<=5,0,1)"
    Range("G11").FormulaArray = "=IF(SIGN(R[1]C[-4])<>SIGN(RC[-4]),ABS(INDEX(C[-5],MIN(IF(R[1]C[-2]:R" & derligne & "C5=1,ROW(R[1]C[-2]:R" & derligne & "C5)),IF(R[1]C[-1]:R" & derligne & "C6=0,ROW(R[1]C[-1]:R" & derligne & "C6),999999)))-RC[-5]),0)"
    Range("G11").AutoFill Destination:=Range("G3:G11"), Type:=xlFillDefault
    Range("H11").FormulaR1C1 = "=AVERAGE(R[-8]C[-6]:R[8]C[-6])"
    Range("H10").FormulaR1C1 = "=AVERAGE(R2C[-6]:R[8]C[-6])"
    Range("H10").AutoFill Destination:=Range("H2:H10"), Type:=xlFillDefault
    Range("I11").FormulaR1C1 = "=IF(SUM(R[-9]C[-3]:R[10]C[-3])=ROWS(R[-9]C[-3]:R[10]C[-3]),MAX(R[-9]C[-7]:R[10]C[-7]),0)"
    Range("I10").FormulaR1C1 = "=IF(SUM(R2C[-3]:R[10]C[-3])=ROWS(R2C[-3]:R[10]C[-3]),MAX(R2C[-7]:R[10]C[-7]),0)"
    Range("I10").AutoFill Destination:=Range("I2:I10"), Type:=xlFillDefault
    Range("J11").FormulaR1C1 = "=IF(SUM(R[-9]C[-4]:R[10]C[-4])=ROWS(R[-9]C[-4]:R[10]C[-4]),MIN(R[-9]C[-8]:R[10]C[-8]),0)"
    Range("J10").FormulaR1C1 = "=IF(SUM(R2C[-4]:R[10]C[-4])=ROWS(R2C[-4]:R[10]C[-4]),MIN(R2C[-8]:R[10]C[-8]),0)"
    Range("J10").AutoFill Destination:=Range("J2:J10"), Type:=xlFillDefault
    Range("K11").FormulaR1C1 = "=RC[-2]-RC[-1]"
    Range("K11").AutoFill Destination:=Range("K2:K11"), Type:=xlFillDefault
    Range("L11").FormulaR1C1 = "=IF(SUM(RC[-6]:R[19]C[-6])=20,MAX(RC[-10]:R[19]C[-10]),0)"
    Range("L11").AutoFill Destination:=Range("L2:L11"), Type:=xlFillDefault
    Range("M11").FormulaR1C1 = "=IF(SUM(RC[-7]:R[19]C[-7])=20,MIN(RC[-11]:R[19]C[-11]),0)"
    Range("M11").AutoFill Destination:=Range("M2:M11"), Type:=xlFillDefault
    Range("N11").FormulaR1C1 = "=RC[-2]-RC[-1]"
    Range("N11").AutoFill Destination:=Range("N2:N11"), Type:=xlFillDefault
    Range("C11:N11").AutoFill Destination:=Range("C11:N" & derligne & "")
    Calculate
    Range("P2:AD2").Copy
    Sheets("Récap").Select
    Range("B" & i + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ActiveWindow.DisplayGridlines = False
    Application.CutCopyMode = False
End Sub

C'est pas fin mais ça fait son office

cordialement

3) PS : pour choisir au mieux ton amplitude maxi, fait un essai sur tes 30 feuilles et regarde les différents maxi de la feuille résultat.
regarde aussi si les n° de lignes trouvés sont proches et si une des options est plus stable que les autres.
 
Dernière édition:

Viv

XLDnaute Nouveau
Re : Recherche d'un maximum et d'un minimum

La macro marche vraiment bien, c'est super, bravo!!

Deux petites choses,

la feuille recap n'existe pas encore avant d'effectuer la macro sur les trente autres feuilles. A quel moment de la macro dois je l'inserer, dans le programme pricinpal traite_classeur avant d'appeler traite_feuille?

L'autre probleme est lorsque les vibrations sont vraiment tres tres faible avec des derivees de l'ordre de 0.006; le systeme ne fonctionne pas bien. En effet la colonne derivee a gauche/droite incremente parfois le chiffre 1 alors que la variation de derive est tres faible (de 0.0006 a 0 par exemple). Ceci a pour effet de provoquer de la zone vibratoire (la ou en fait il n'y en a pas). Et ducoup, on trouve en sortie une amplitude de vibrations grande aux alentours de 2V la ou elle devrait avoisiner les 0.

Peut etre pourrait on modifier cela en mettant une condition sur la magnitude de la derivee, en disant par exemple que entre 0.01 et -0.01 (pour la derivee) on ne peut pas considerer qu il y a zone vibratoire..

Je joins un exemple de donnees avec des vibrations quasi nulles.

Tres cordialement.

Viv
 

Pièces jointes

  • test1.zip
    12.7 KB · Affichages: 25
  • test1.zip
    12.7 KB · Affichages: 24
  • test1.zip
    12.7 KB · Affichages: 25

ODVJ

XLDnaute Impliqué
Re : Recherche d'un maximum et d'un minimum

Bonjour,

pour le traitement, tu ajoutes l'appel à cette macro en première ligne du traitement :
Code:
Sub crée_récap()
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = "Récap"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Max derivate "
    With ActiveCell.Characters(Start:=1, Length:=13).Font
        .Name = "Arial"
        .FontStyle = "Gras"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "Min derivate"
    With ActiveCell.Characters(Start:=1, Length:=12).Font
        .Name = "Arial"
        .FontStyle = "Gras"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "ligne"
    With ActiveCell.Characters(Start:=1, Length:=5).Font
        .Name = "Arial"
        .FontStyle = "Gras"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "amplitude_Droite"
    With ActiveCell.Characters(Start:=1, Length:=16).Font
        .Name = "Arial"
        .FontStyle = "Gras"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "amplitude_Gauche"
    With ActiveCell.Characters(Start:=1, Length:=16).Font
        .Name = "Arial"
        .FontStyle = "Gras"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("G1").Select
    ActiveCell.FormulaR1C1 = "amplitude_Centrée"
    With ActiveCell.Characters(Start:=1, Length:=17).Font
        .Name = "Arial"
        .FontStyle = "Gras"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("I1").Select
    ActiveCell.FormulaR1C1 = "Max_Delta"
    With ActiveCell.Characters(Start:=1, Length:=9).Font
        .Name = "Arial"
        .FontStyle = "Gras"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("J1").Select
    ActiveCell.FormulaR1C1 = "ligne"
    With ActiveCell.Characters(Start:=1, Length:=5).Font
        .Name = "Arial"
        .FontStyle = "Gras"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("L1").Select
    ActiveCell.FormulaR1C1 = "Max_écart glissant_20C"
    With ActiveCell.Characters(Start:=1, Length:=22).Font
        .Name = "Arial"
        .FontStyle = "Gras"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("M1").Select
    ActiveCell.FormulaR1C1 = "ligne"
    With ActiveCell.Characters(Start:=1, Length:=5).Font
        .Name = "Arial"
        .FontStyle = "Gras"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("O1").Select
    ActiveCell.FormulaR1C1 = "Max_écart glissant_20C"
    With ActiveCell.Characters(Start:=1, Length:=22).Font
        .Name = "Arial"
        .FontStyle = "Gras"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("P1").Select
    ActiveCell.FormulaR1C1 = "ligne"
    With ActiveCell.Characters(Start:=1, Length:=5).Font
        .Name = "Arial"
        .FontStyle = "Gras"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "feuille 1"
    With ActiveCell.Characters(Start:=1, Length:=9).Font
        .Name = "Arial"
        .FontStyle = "Gras"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("A2").Select
    Selection.AutoFill Destination:=Range("A2:A31"), Type:=xlFillDefault
    Range("B1:G1,I1:J1,L1:M1,O1:P1").Select
    Range("O1").Activate
    With Selection.Interior
        .ColorIndex = 40
        .Pattern = xlSolid
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    ActiveWindow.DisplayGridlines = False
    Range("B1").Select
    Selection.Copy
    Range("A2:A31").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Range("B2:G31,I2:J31,L2:M31,O2:P31").Select
    Range("O2").Activate
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    Range("H:H,K:K,N:N").Select
    Range("N1").Activate
    Selection.ColumnWidth = 1.14
    Columns("L:L").ColumnWidth = 11.86
    Columns("O:O").ColumnWidth = 12
    Range("J:J,P:P,D:D").Select
    Range("D1").Activate
    Selection.ColumnWidth = 7.86
    Range("A1").Select
End Sub

Remarque : ce genre de code s'obtient par l'enregistreur de macro.

A+
 

Viv

XLDnaute Nouveau
Re : Recherche d'un maximum et d'un minimum

Mille fois merci encore,

Oui, tu as raison, il est bien pratique l'enregistreur de macro, en fait le truc qui me faisait defaut je pense que c'etait cette comande:

Sheets.Add After:=Sheets(Sheets.Count)

Bon, il reste finalement plus que le dernier probleme dans le cas ou les vibrations sont tres faibles et ca ira. Tu as pu jeter un coup d'oeil deja?
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 836
Messages
2 092 652
Membres
105 479
dernier inscrit
chaussadas.renaud