Copie d'une cellule d'un classeur vers un autre sous condition

Copie d'une cellule d'un classeur vers un autre sous condition - VB/VBA/VBS - Programmation

Marsh Posté le 15-01-2009 à 00:24:45    

Bonjour,
 
Voilà ce que je cherche à faire :
 
1. J'ai deux classeurs Excel A et B
A Contient une liste de véhicule (dont le nombre peut varier mais ne peut excéder 45) dans la colonne X.
B Contient plusieurs onglet avec le nom (ou pas) identique à la liste du classeur A de chaque véhicule
 
2. Je cherche à copier la range("A1" ) de chaque onglet du classeur B dans le classeur A, dans l'ordre des véhicules de la liste du classeur A...
 
Windows("A.xls" ).Activate
Sheets("Feuil1" ).Activate

'recherche chaque véhicule de la liste et vérifie que la cellule n'est pas vide
For each a in range ("X1:X45" )
if a <> "" Then

'recherche dans le classeur B l'onglet qui porte le nom du premier véhicule de la liste
Windows("B.xls" ).Activate
Set t = .Find(Sheets(1).Range(a).Value)
    If Not t Is Nothing Then

'Si il trouve l'onglet alors il active l'onglet et copie la cellule A1 dans le classeur A colonne Y
 ActiveSheets.Activate
Range("A1" ).copy
Windows("A.xls" ).Activate
Sheets("Feuil1" ).Activate
Range("Y1" ).Select
Selection.Paste

End if
next a
End Sub

 
Voici la macro que j'ai essayé mais bien entendu ça bloque dès la recherche dans le classeur B d'un onglet portant le nom du premier véhicule de la liste !
 
Je débute dans le milieux! Merci de m'aider à trouver un début de réponse !
 
Vincent.
 
 

Reply

Marsh Posté le 15-01-2009 à 00:24:45   

Reply

Marsh Posté le 21-01-2009 à 19:24:21    


 
Si tu utilises les offset ça va nettement Mieux....
 
Essais avec ce code....  
 

Code :
  1. Set rng = Sheets("B" ).Range("A1" )
  2. Set rng2 = Sheets("A" ).Range("A1" )
  3. rng2i = -1
  4. rng2j = 24 ' Colonne Y
  5. Sheets("A" ).Select
  6. Sheets("A" ).Activate
  7. 'recherche chaque véhicule de la liste et vérifie que la cellule n'est pas vide
  8. For Each a In Range("A1:A45" )
  9.     rngi = 0
  10.     rngj = 0
  11.     rng2i = rng2i + 1
  12.     If a <> "" Then
  13.         'recherche dans le classeur B l'onglet qui porte le nom du premier véhicule de la liste
  14.         Sheets("B" ).Select
  15.         Sheets("B" ).Activate
  16.         While rng.Offset(rngi, rngj).Value <> ""
  17.             rng.Offset(rngi, rngj).Select
  18.             t = rng.Offset(rngi, rngj).Value
  19.             If t = a Then
  20.             'Si il trouve l'onglet alors il active l'onglet et copie la cellule A1 dans le classeur A colonne Y
  21.                
  22.                 Sheets("A" ).Select
  23.                 Sheets("A" ).Activate
  24.                 rng2.Offset(rng2i, rng2j).Select
  25.                 rng2.Offset(rng2i, rng2j).Value = rng.Offset(rngi, rngj).Value
  26.                 Sheets("B" ).Select
  27.                 Sheets("B" ).Activate
  28.                
  29.             End If
  30.             rngi = rngi + 1
  31.         Wend
  32.     End If
  33.     Sheets("A" ).Select
  34.     Sheets("A" ).Activate
  35. Next a

Reply

Sujets relatifs:

Leave a Replay

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