Problème de selection de cellule

Bonjour à tous ! Je suis nouvelle sur VBA, et je voudrais vous faire part d'un problème que je n'arrive pas à régler...

Je vous explique ce que j'essaye de faire :

J'ai un premier tableau en B4:F20.

Je souhaite le séparer en fonction de la colonne C. En effet, il est indiqué pour chaque ligne "a" ou "b" dans la colonne C.

Je souhaite créer deux nouveaux tableaux :

  • l'un en I5:M21, reprenant l'ensemble des lignes du premier tableau comportant "a" en colonne C,
  • l'autre en I18:M24, reprenant l'ensemble des ligne du premier tableau comportant "b" en colonne C.

J'ai donc essayé de créer un macro qui regarde la case C de la première ligne, et copie cette ligne dans le tableau des "a" si elle trouve un "a", ou le tableau des "b" si elle trouve un "b".

La macro m'a l'air correcte, elle le plante pas, mais elle ne fait tout simplement pas ce que je lui demande.

J'essaye d'être claire, mais je ne suis pas sure que ce soit le cas...

N'hésitez pas à me donner d'autres remarques que vous pourriez avoir, même si elles ne concernant pas directement la solution de mon problème ! Je suis toute nouvelle sur vba, et je suis sure que ça se voit

Merci beaucoup de votre aide !

Ci-après, mon code :

Dim celselect As Range, plageselection As Range, copiemachinea As Range, copiemachineb As Range

Range("C4").Select

Set celselect = ActiveCell

Range("B4:F4").Select

Set plageselection = ActiveCell

Range("I5").Select

Set copiemachinea = ActiveCell

Range("I18").Select

Set copiemachineb = ActiveCell

celselect.Select

For i = 1 To 20

If ActiveCell = "a" Then

plageselection.Select

selection.Copy

copiemachinea.Select

ActiveSheet.Paste

copiemachinea.Select

ActiveCell.Offset(1, 0).Select

copiemachinea = ActiveCell

plageselection.Select

ActiveCell.Offset(1, 0).Select

plageselection = ActiveCell

celselect.Select

ActiveCell.Offset(1, 0).Select

celselect = ActiveCell

ElseIf ActiveCell = "b" Then

plageselection.Select

selection.Copy

copiamachinea.Select

ActiveSheet.Paste

copiemachineb.Select

ActiveCell.Offset(1, 0).Select

copiemachineb = ActiveCell

plageselection.Select

ActiveCell.Offset(1, 0).Select

plageselection = ActiveCell

celselect.Select

ActiveCell.Offset(1, 0).Select

celselect = ActiveCell

Else

End If

Next

Bonjour,

Bête question peut être mais I5:M21 et I18:M24 sur deux feuilles différentes ??

Sinon mets ton fichier en ligne, ce sera plus simple que de le refaire

Amicalement

Edit Dan :Sur une même feuille essaie ceci :

Sub test()
Dim i as byte, k as byte, j as byte
j = 5
k = 18
For i = 4 To 20
    If Range("C" & i) = "a" Then Range("B" & i & ":F" & i).Copy Range("I" & j): j = j + 1
    If Range("C" & i) = "b" Then Range("B" & i & ":F" & i).Copy Range("I" & k + 3): k = k + 1
Next
End Sub

Si ok, lors de ta réponse clique sur le V vert à coté du bouton EDITER pour cloturer le fil

Bonjour

Une solution simple

Option Explicit

Sub Recopie()
Dim LgTabloA As Long
Dim LgTabloB As Long
Dim LgTablo As Long

  Application.ScreenUpdating = False
  LgTabloA = 5
  LgTabloB = 18

  For LgTablo = 4 To 20
    If UCase(Range("C" & LgTablo)) = "A" Then
      Range("B" & LgTablo & ":F" & LgTablo).Copy Range("I" & LgTabloA)
      LgTabloA = LgTabloA + 1
    ElseIf UCase(Range("C" & LgTablo)) = "B" Then
      Range("B" & LgTablo & ":F" & LgTablo).Copy Range("I" & LgTabloB)
      LgTabloB = LgTabloB + 1
    End If
  Next LgTablo
End Sub

C'est exactement ce que je voulais faire, mais beaucoup plus simple que ma façon de m'y prendre !

Merci beaucoup pour votre aide et la rapidité de vos réponses !

A bientôt, en espérant un jour pouvoir aider d'autres débutants !

Rechercher des sujets similaires à "probleme selection"