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 SubSi 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 SubC'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 !