Macro

Résolu
Bonjour,

J'ai créé une macro que je dois appliquer à chaque cellule de la même colonne, k776 à k1006.
Je fais actuellement la manip à la main cellule par cellule. Pourriez vous m'expliquer ce que je dois ajouter dans cette macro pour qu'elle s'execute d'elle même à la cellule suivante et ce de k776 à k1006.

Merci d'avance,
Configuration: Windows XP Internet Explorer 7.0

9 réponses

  1. J'avoue avoir en partie menti, sa fait des années que j'aprends différents languages C,html,php ... donc même avec seulement 4jours d'access, jretiens facilement, surtout les trucs basiques svt nécessaires: range pour selectionner une cellule, do while pour une boucle, & pour concatener
    après jsuis paumé sur les plus grosses fonctions, c'est pour sa que tu m'as épaté quand jt'ai expliqué ce qu'il fallait (GrandX_mystère :P) et que t'as trouvé de suite les fonctions, et adaptée
    et franchement si ta fonction marche déjà impec, je tire mon chapeau, je suis habitué aux problèmes en cascade en prog, jcafouille un peu trop parfois ^^
    sur ce jpense que jraconte ma vie, donc j'arrete de m'afficher sur ce mot: Topinambour
    ;) Have fun
    0
    1. Merci ça fonctionne. Comment en sais tu autant en 4 jours sur la macro ?????
      0
      1. alors pour la ligne range l'erreur est "Ki+1", c'est évident qu'il ne le reconnait pas, il ne remplace pas i par sa valeur et l'incremente encore moins =/
        d'ailleurs pourquoi incrementes-tu ?
        Sinon je vois 2solutions pour remplacer ton range:
        la solution que je t'avais proposé:
        range(i,11)
        

        avec i en numéro de ligné
        et 11 en numéro de colonne (11=K)
        ou, avec ta méthode:
        range("K" & i)
        ou
        range("K" & (i+1) )
        

        NB: le & sert à concatener: en gros il colle la valeur de i après K, genre i=805: "K" & i => "K805"
        et j'ai mis 2codes à savoir sans et avec incrémentation, choisis celui que tu veux
        PS: moi aussi je suis nouveau en macro, sa fait 4jours que jm'y coltine pour ltaff ^^ et bien joué, jvois que t'as trouvé les morceaux de code qui manque, tu m'impressiones :)
        0
        1. J'ai essayé ceci mais message d'erreur pour la ligne "Range..." Je fais mes débuts en macro, ne pas se moquer !
          Une explication ?

          Sub essai()
          '
          ' essai Macro
          ' Macro enregistrée le 29/12/2009 par
          '

          '
          For i = 776 To 1006

          Range("Ki+1").Select
          Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
          Application.Run "'202.xls'!MODIFEXP"(ma macro)
          Windows("RECAPITULATIF CLIENTS.xls").Activate

          Next i
          End Sub
          0
          1. Sinon jvoudrai que tu test quelque chose: tu enregistre une maccro ou tu ne fais que cliquer sur un lien, puis tu arretes l'enregistrement, et tu copie le code qu'il te met
            Sinon j'ai trouvé la fonction FollowHyperLink
            de la forme:
            [application.]FollowHyperlink address, [subaddress], [newwindow], [addhistory], [extrainfo], [method], [headerinfo]
            

            qui se taperait donc dans ton cas:
            application.FollowHyperlink Cells(x,11)
            (je pense que le "application." est facultatif)
            Cells(x,11) sélectionne la case k776~1006
            fais un test pour voir si sa tlance kkchose ...
            0
            1. tu rajoutes ceci je crois:
              x = 776
              Do While x<=1006
              
              GrandX_mystère_1
              
              [ton code maccro]
              
              GrandX_mystère_2
              
              x = x + 1
              Loop
              


              Voilaà, le code fera une bouclera entre Do while ... et Loop, il repetera ton code (1006-776)fois
              Le problème c'est que dans tes cellules tu dois ouvrir le lien du nouveau classeur, et appliquer la maccro sur ce classeur, et revenir en reprenant le focus sur le classeur principal, il va falloir chercher encor un peu
              Voici les GrandXs:
              GrandX_mystère_1: doit selectionner la cellule (x,11) (11 correspond à k); ouvrir le lien qu'il contient; définir le focus sur la nouvelle fenêtre
              GrandX_mystère_2: ta maccro quitte le sous-classeur toute seule si je me trompe pas. Reprise du focus sur le classeur principal pour recomencer la prochaine boucle ..
              0
              1. Ok jtu dois pouvoir faire une boucle sur les cellules en fonction d'un critère
                0
                1. La voici,
                  Les cellules de la colonne k dans mon classeur principal contiennent un lien hypertexte qui me conduit directement à un autre classeur excel plus détaillé. Chaque cellule correspond à un fichier excel. C'est une fois avoir cliqué sur ce lien et donc ouvert le classeur excel correspondant que j'éxécute la macro suivante puis je fais de même pour la cellule suivante et la suivante...

                  Sub MODIFEXP()
                  '
                  ' MODIFEXP Macro
                  ' Macro enregistrée le 28/12/2009 par
                  '
                  ' Touche de raccourci du clavier: Ctrl+Maj+M
                  '
                  Range("C27:D38").Select
                  Selection.Copy
                  Range("C6:D17").Select
                  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                  :=False, Transpose:=False
                  Application.CutCopyMode = False
                  Range("H27:I38").Select
                  Selection.Copy
                  Range("H6:I17").Select
                  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                  :=False, Transpose:=False
                  Application.CutCopyMode = False
                  Range("G22:U23").Select
                  Selection.Copy
                  Range("J1:U2").Select
                  ActiveSheet.Paste
                  Application.CutCopyMode = False
                  Range("G22:U23").Select
                  Windows("201.xls").Activate
                  Range("B4:U5").Select
                  Selection.Copy
                  Windows(2).Activate
                  Range("B4:U5").Select
                  ActiveSheet.Paste
                  Windows("201.xls").Activate
                  Application.CutCopyMode = False
                  Range("E6").Select
                  Selection.Copy
                  Windows(2).Activate
                  Range("E6").Select
                  Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
                  SkipBlanks:=False, Transpose:=False
                  Range("J6").Select
                  Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
                  SkipBlanks:=False, Transpose:=False
                  Range("O6").Select
                  Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
                  SkipBlanks:=False, Transpose:=False
                  Range("T6").Select
                  Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
                  SkipBlanks:=False, Transpose:=False
                  Range("E6").Select
                  Application.CutCopyMode = False
                  Selection.AutoFill Destination:=Range("E6:F6"), Type:=xlFillDefault
                  Range("E6:F6").Select
                  Selection.AutoFill Destination:=Range("E6:F17"), Type:=xlFillDefault
                  Range("E6:F17").Select
                  Range("J6").Select
                  Selection.AutoFill Destination:=Range("J6:K6"), Type:=xlFillDefault
                  Range("J6:K6").Select
                  Selection.AutoFill Destination:=Range("J6:K17"), Type:=xlFillDefault
                  Range("J6:K17").Select
                  Range("O6").Select
                  Selection.AutoFill Destination:=Range("O6:P6"), Type:=xlFillDefault
                  Range("O6:P6").Select
                  Selection.AutoFill Destination:=Range("O6:P17"), Type:=xlFillDefault
                  Range("O6:P17").Select
                  Range("T6").Select
                  Selection.AutoFill Destination:=Range("T6:U6"), Type:=xlFillDefault
                  Range("T6:U6").Select
                  Selection.AutoFill Destination:=Range("T6:U17"), Type:=xlFillDefault
                  Range("T6:U17").Select
                  Windows("201.xls").Activate
                  Range("E18").Select
                  Selection.Copy
                  Windows(2).Activate
                  Range("E18").Select
                  Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
                  SkipBlanks:=False, Transpose:=False
                  Range("J18").Select
                  Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
                  SkipBlanks:=False, Transpose:=False
                  Range("O18").Select
                  Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
                  SkipBlanks:=False, Transpose:=False
                  Range("T18").Select
                  Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
                  SkipBlanks:=False, Transpose:=False
                  Range("E18").Select
                  Application.CutCopyMode = False
                  Selection.AutoFill Destination:=Range("E18:F18"), Type:=xlFillDefault
                  Range("E18:F18").Select
                  Range("J18").Select
                  Selection.AutoFill Destination:=Range("J18:K18"), Type:=xlFillDefault
                  Range("J18:K18").Select
                  Range("O18").Select
                  Selection.AutoFill Destination:=Range("O18:P18"), Type:=xlFillDefault
                  Range("O18:P18").Select
                  Range("T18").Select
                  Selection.AutoFill Destination:=Range("T18:U18"), Type:=xlFillDefault
                  Range("T18:U18").Select
                  Range("A22:U39").Select
                  Selection.ClearContents
                  With Selection
                  .Orientation = 0
                  .AddIndent = False
                  .ShrinkToFit = False
                  .ReadingOrder = xlContext
                  .MergeCells = False
                  End With
                  Selection.Borders(xlDiagonalDown).LineStyle = xlNone
                  Selection.Borders(xlDiagonalUp).LineStyle = xlNone
                  Selection.Borders(xlEdgeLeft).LineStyle = xlNone
                  Selection.Borders(xlEdgeTop).LineStyle = xlNone
                  Selection.Borders(xlEdgeBottom).LineStyle = xlNone
                  Selection.Borders(xlEdgeRight).LineStyle = xlNone
                  Selection.Borders(xlInsideVertical).LineStyle = xlNone
                  Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
                  Selection.Interior.ColorIndex = 15
                  Rows("3:3").Select
                  Selection.RowHeight = 100
                  Range("A3").Select
                  Selection.Borders(xlDiagonalDown).LineStyle = xlNone
                  Selection.Borders(xlDiagonalUp).LineStyle = xlNone
                  With Selection.Borders(xlEdgeLeft)
                  .LineStyle = xlContinuous
                  .Weight = xlMedium
                  .ColorIndex = xlAutomatic
                  End With
                  With Selection.Borders(xlEdgeTop)
                  .LineStyle = xlContinuous
                  .Weight = xlMedium
                  .ColorIndex = xlAutomatic
                  End With
                  With Selection.Borders(xlEdgeBottom)
                  .LineStyle = xlContinuous
                  .Weight = xlMedium
                  .ColorIndex = xlAutomatic
                  End With
                  Selection.Borders(xlEdgeRight).LineStyle = xlNone
                  Range("A1:A2").Select
                  With ActiveSheet.PageSetup
                  .PrintTitleRows = ""
                  .PrintTitleColumns = ""
                  End With
                  ActiveSheet.PageSetup.PrintArea = ""
                  With ActiveSheet.PageSetup
                  .LeftHeader = ""
                  .CenterHeader = ""
                  .RightHeader = ""
                  .LeftFooter = ""
                  .CenterFooter = ""
                  .RightFooter = ""
                  .LeftMargin = Application.InchesToPoints(0.787401575)
                  .RightMargin = Application.InchesToPoints(0.787401575)
                  .TopMargin = Application.InchesToPoints(0.984251969)
                  .BottomMargin = Application.InchesToPoints(0.984251969)
                  .HeaderMargin = Application.InchesToPoints(0.4921259845)
                  .FooterMargin = Application.InchesToPoints(0.4921259845)
                  .PrintHeadings = False
                  .PrintGridlines = False
                  .PrintComments = xlPrintNoComments
                  .PrintQuality = 600
                  .CenterHorizontally = False
                  .CenterVertically = False
                  .Orientation = xlLandscape
                  .Draft = False
                  .PaperSize = xlPaperA4
                  .FirstPageNumber = xlAutomatic
                  .Order = xlDownThenOver
                  .BlackAndWhite = False
                  .Zoom = 100
                  .PrintErrors = xlPrintErrorsDisplayed
                  End With
                  ActiveWindow.ScrollRow = 2
                  ActiveWindow.ScrollRow = 3
                  ActiveWindow.ScrollRow = 4
                  Range("A41:U41").Select
                  Selection.AutoFill Destination:=Range("A32:U41"), Type:=xlFillDefault
                  Range("A32:U41").Select
                  ActiveWindow.ScrollRow = 3
                  ActiveWindow.ScrollRow = 2
                  ActiveWindow.ScrollRow = 1
                  Range("F18").Select
                  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 = xlMedium
                  .ColorIndex = xlAutomatic
                  End With
                  With Selection.Borders(xlEdgeRight)
                  .LineStyle = xlContinuous
                  .Weight = xlMedium
                  .ColorIndex = xlAutomatic
                  End With
                  Range("K18,P6:P18").Select
                  Range("P6").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 = xlMedium
                  .ColorIndex = xlAutomatic
                  End With
                  With Selection.Borders(xlEdgeRight)
                  .LineStyle = xlContinuous
                  .Weight = xlMedium
                  .ColorIndex = xlAutomatic
                  End With
                  With Selection.Borders(xlInsideHorizontal)
                  .LineStyle = xlContinuous
                  .Weight = xlThin
                  .ColorIndex = xlAutomatic
                  End With
                  Range("T6:T18").Select
                  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 = xlMedium
                  .ColorIndex = xlAutomatic
                  End With
                  With Selection.Borders(xlEdgeRight)
                  .LineStyle = xlContinuous
                  .Weight = xlThin
                  .ColorIndex = xlAutomatic
                  End With
                  With Selection.Borders(xlInsideHorizontal)
                  .LineStyle = xlContinuous
                  .Weight = xlThin
                  .ColorIndex = xlAutomatic
                  End With
                  Range("A1:A2").Select

                  ActiveWorkbook.Save
                  ActiveWorkbook.Close
                  End Sub
                  0
                  1. Bonjour,

                    Peux-tu envoyer le code de ta macro
                    1