Comment copier une partie d'une colonne avec condition?

Comment copier une partie d'une colonne avec condition? - VB/VBA/VBS - Programmation

Marsh Posté le 23-05-2011 à 08:32:33    

Bonjour,
 
Je souhaite copier une partie de 2 colonnes Excel en fonction de deux paramètres portant sur une des deux colonnes.
En fait j'ai deux seuils (variables) et je veux copier deux colonnes entre ses deux seuils.
exemple:  seuil 2 et 7
et j'ai le tableau suivant
1     A
2     F
3     G
4     U
5     K
6     S
7     P
8     V
....
 
Merci pour vos réponses

Reply

Marsh Posté le 23-05-2011 à 08:32:33   

Reply

Marsh Posté le 23-05-2011 à 10:41:01    

En VBA, on peut écrire une macro qui ressemblerait à :

Code :
  1. ' Recherche le début
  2.   seuil_debut = 2
  3.   col_no = 1 ' pour la colonne B (A = 1, B = 2)
  4.   lg_no = 1  ' à partir de la première ligne
  5.   Do While Not IsEmpty(Cells(lg_no, col_no))
  6.      If (src_feuille.Cells(src_lg_no, src_col_no).Value = seuil_debut) Then
  7.       Exit For
  8.     End If
  9.     lg_no = lg_no + 1
  10.   Loop
  11.   If (IsEmpty(Cells(lg_no, col_no)) Then
  12.      Return ' Seuil non trouvé, on sort
  13.   End If
  14.   lg_debut_copie = lg_no;
  15. ' Recherche la fin
  16.   seuil_fin = 7
  17.   lg_no = lg_debut_copie
  18.   Do While Not IsEmpty(Cells(lg_no, col_no))
  19.      If (src_feuille.Cells(src_lg_no, src_col_no).Value = seuil_fin) Then
  20.       Exit For
  21.     End If
  22.     lg_no = lg_no + 1
  23.   Loop
  24.   If (IsEmpty(Cells(lg_no, col_no)) Then
  25.      Return ' Seuil non trouvé, on sort
  26.   End If
  27.   lg_fin_copie = lg_no;
  28. ' Copie
  29.     src_col_no = 1 ' pour la colonne B (A = 1, B = 2)
  30.     src_lg_no = lg_debut_copie  ' à partir de la première ligne
  31.     dst_col_no = 3
  32.     dst_lg_no = 1
  33.     Do While (src_lg_no <= lg_fin_copie)
  34.         Cells(dst_lg_no, dst_col_no).Value  = Cells(src_lg_no, src_col_no).Value
  35.         Cells(dst_lg_no, dst_col_no + 1).Value  = Cells(src_lg_no, src_col_no + 1).Value
  36.         dst_lg_no = dst_lg_no + 1
  37.         src_lg_no = src_lg_no + 1
  38.     Loop


Message édité par olivthill le 24-05-2011 à 11:10:48
Reply

Marsh Posté le 23-05-2011 à 11:36:46    

Merci,
par contre mon seuil est variable, il est stocké dans F9, comment je dois le coder?

Reply

Marsh Posté le 23-05-2011 à 14:50:29    

Si le seuil inférieur est stocké dans F9 (qui contiendrai donc 2, dans notre exemple), alors il suffit de remplacer, dans mon code, la ligne

seuil_debut = 2

par

seuil_debut = Cells(9,6).value  ' 9 car 9e ligne, et 6 car F est la 6e colonne

Reply

Marsh Posté le 24-05-2011 à 03:13:29    

Merci beaucoup, et j'ai une dernière question (très bête je pense)
Comment fait on appelle à la macro dans la feuille excel?
Merci beaucoup

Reply

Marsh Posté le 24-05-2011 à 10:59:08    

Salut, tu la nommes ,ce qui ici n'a pas été le cas,
dans un module tu tapes par exemple Sub Recherche
et tu places le code d'Olivthill entre le Sub Recherche et le End Sub
Sur la feuille Excel tu peux placer un Bouton et l'associer à Sub Recherche()
ou via le menu Outils/Macro/Macros
 
Pour infos : http://silkyroad.developpez.com/VBA/DebuterMacros/ http://excel.developpez.com/faq/?f [...] OOOOOOOOOO


Message édité par kiki29 le 24-05-2011 à 11:02:56
Reply

Marsh Posté le 24-05-2011 à 11:51:26    

ok merci pour tout

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed