Problème VBA Excel

Résolu
Bonjour,

J'essaie depuis 2 h de faire un petit code mais mes connaissances sont limitées en programmation et mes recherches infructueuses.

Mon programme permet de répéter une suite d'action dans Excel :
Prendre les cellules C2 et D2, les couper, les coller en A1 et B1, sauter une ligne entre 2 et 3 puis recommencer (prendre cellules C4 et D4, les couper, les coller en A3 et B3, sauter une ligne entre 4 et 5.......). A cela je voulais y ajouter une boucle qui arrête la marco lorsqu'il n'y a plus de donnée dans une cellule.

Voici mon code :

Sub Macro2()

    Dim var1 As Integer
    var1 = 2 

    Dim var2 As Integer
    var2 = 1
    
    Dim var3 As Integer
    var3 = 3
    
    Dim var4 As Boolean
    var4 = 0

'If var4 = False Then
    Range("Cvar1:Dvar1").Select
    Selection.Cut
    Range("Avar2").Select
    ActiveSheet.Paste
    Rows("var3:var3").Select
    Selection.Insert Shift:=xlDown
    var1 = var1 + 2
    var2 = var2 + 2
    var3 = var3 + 2
    
 'If Range("Ai") = Null Then var4 = True
 'End If
End Sub


Pouvez-vous m'aider à résoudre les problèmes? Merci

le débogueur n'est déjà pas content pour cette ligne et je ne trouve pas pourquoi : Range("Cvar1:Dvar1").Select

6 réponses

  1. tu peux juste mettre ton sujet à resolu stp (en dessous de ton titre normalement
    0
    1. fonctionne superbement merci.

      maintenant je vais essayer d'ajouter d'autres actions.
      0
      1. re,

        il faut que tu écrives :

        If Cells(var1, 1) = "" Then var4 = True

        au lieu de ce que tu as mis.
        0
        1. Cela fonctionne merci, ma boucle aussi mais par contre je n'arrive pas à l'arrêter quand il n'y a rien dans la cellule cible

          Mon code :

          Sub Macro2()
          
              Dim var1 As Integer
              var1 = 2
              
              Dim var2 As Integer
              var2 = 1
              
              Dim var3 As Integer
              var3 = 3
              
              Dim var4 As Boolean
              var4 = 0
          
          line18:
          If var4 = False Then
              Range(Cells(var1, 3), Cells(var1, 4)).Select
              Selection.Cut
              Cells(var2, 1).Select
              ActiveSheet.Paste
              Rows(var3).Select
              Selection.Insert Shift:=xlDown
              var1 = var1 + 2
              var2 = var2 + 2
              var3 = var3 + 2
              If Cells(var1, 1) = Not Vide Then var4 = True
              
              GoTo line18
           End If
          End Sub
          0
          1. bonjour,

            c'est tout à fait normal :

            Sub Macro2()

            Dim var1 As Integer
            var1 = 2

            Dim var2 As Integer
            var2 = 1

            Dim var3 As Integer
            var3 = 3

            Dim var4 As Boolean
            var4 = 0

            'If var4 = False Then
            Range(cells(var1,3), cells(var1,4).Select
            Selection.Cut
            cells(var2,1).Select
            ActiveSheet.Paste
            Rows(var3).Select
            Selection.Insert Shift:=xlDown
            var1 = var1 + 2
            var2 = var2 + 2
            var3 = var3 + 2

            'If Range("Ai") = "" Then var4 = True
            'End If
            End Sub
            0
            1. Contributeur
              Bonjour,

              si tu veux sélectionner les cellules de la ligne var1 pour les colonnes C et D, tu ferais mieux d'écrire :
              Range(Cells(var1,3),Cells(var1,4))

              ou
              Range("C" & var1 & ":" & "D" & var1)


              Cordialement.
              0