Ecriture d'une boucle dans une macro

Bonsoir à tous,

Ne connaissant rien à VBA, je me suis bricolé une macro à partir d'une qui m'avait été faite par Nad-Dan.

Problème, il faut que j'y inclue maintenant une boucle que je ne sais donc pas écrire.

Je vous joins un petit fichier de simulation de ce que j'ai à faire.

https://www.excel-pratique.com/~files/doc2/Macro_pour_boucle.xls

Merci de votre aide.

J'ai mieux expliqué ce que j'ai défini comme variables

https://www.excel-pratique.com/~files/doc2/Macro_pour_boucle_v2.xls

Bonsoir,

Il y a plusieurs manières de faire, en voici trois

Sub macro1()
'*** Cel.Offset(5, 4)signifie decaler de 5 lignes en + et
' 4 colonnes vers la droite
Dim Cel As Range
    For Each Cel In Range("b10:b30")
        If Cel <> "" Then Cel.Copy Destination:=Cel.Offset(5, 4)
    Next Cel
End Sub
Sub macro2()
'*** avec collage spécial/Valeur
'*** Application.CutCopyMode = False (annuler Copier)
Dim Cel As Range
    For Each Cel In Range("b10:b30")
        If Cel <> "" Then
            Cel.Copy
            Cel.Offset(5, 4).PasteSpecial Paste:=xlValues
            Application.CutCopyMode = False
        End If
    Next Cel
End Sub
Sub macro3()
'*** compteur de 10 à 30
'  ici,la variable "i" = N° ligne
Dim i As Integer
    For i = 10 To 30
        Range("f" & i + 5) = Range("b" & i)
    Next i
End Sub

Ton 1er fichier

https://www.excel-pratique.com/~files/doc2/MacroBoucle.xls

Bonne soirée

Claude.

Bonjour,

de la façon dont j'ai compris ton problème, voici une solution

Public Sub CopierCollerPerso()
    Dim ZoneCopier As Range
    Dim Coller As Range
    Dim CollerFin As Range

    With Sheets("Feuil1")
         'Determine la zone à copier
         Set ZoneCopier = Range(.Range("K4").Value & ":" & .Range("K5").Value)
         'La première cellule de la zone destination, la variable servira aussi à enregistrer
         'la progression
         Set Coller = Range(.Range("K6").Value)
         'La dernière cellule de la zone destination
         Set CollerFin = Range(.Range("K7").Value)
    End With

    'Boucle sur chaque cellule de la zone à copier
    For Each MaCellule In ZoneCopier
        'Si la ligne de la cellule destination est plus petite ou égale à la dernière
        'cellule accepté, le collage se fait, sinon message d'erreur
        If Coller.Row <= CollerFin.Row Then
            'On copie la valeur de la cellule
            Coller.Value = MaCellule.Value
            'On "avance" la cellule destination de une cellule vers le bas
            Set Coller = Coller.Offset(1, 0)
        Else
            MsgBox "Les dimensions de la zone coller sont trop petite" & vbCr & vbCr & "Les données de la cellule " & MaCellule.Address & " et les suivantes ne seront pas copier", vbCritical, "Erreur de traitement"
        End If
    Next MaCellule

End Sub

voici ton Fichier

Math

ps Bonsoir Claude

Merci à Math et Dubois

Je vais donc essayer ce week-end (c'est parti pour plusieurs heures ...)

Si j'y arrive je viendrai clore le sujet, sinon armez-vous de patience !

Cordialement.

Rechercher des sujets similaires à "ecriture boucle macro"