Problème VBA Excel

Résolu
dubol -  
melanie1324 Messages postés 1561 Statut Membre -
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. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    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
  2. melanie1324 Messages postés 1561 Statut Membre 156
     
    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
  3. dubol
     
    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
  4. melanie1324 Messages postés 1561 Statut Membre 156
     
    re,

    il faut que tu écrives :

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

    au lieu de ce que tu as mis.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubol
     
    fonctionne superbement merci.

    maintenant je vais essayer d'ajouter d'autres actions.
    0
  7. melanie1324 Messages postés 1561 Statut Membre 156
     
    tu peux juste mettre ton sujet à resolu stp (en dessous de ton titre normalement
    0