Recopie automatiquement sous excel - VB

Résolu
julien -  
 julien - 5 juil. 2011 à 16:47
Bonjour à tous,

Pour ne pas avoir a recopier l'ensemble des données d'un tableau qui s'enrichit au fur et à mesure j'essaie de réaliser une macro - code VB.

Étant débutant en VB, je souhaiterai avoir des pistes et orientations.

Mon problème :
Sur la feuille 1, la colonne A dispose d'un numéro de dossier (ex : 52), les colonnes B, C, D, E et F d'une série d'information.

Je souhaite avoir une recopie automatique sur la feuille 2 en fonction du numéro de dossier qui se trouve en A.

EX : si je met le numéro 52 dans la colonne A de la feuille 2, j'exécute ma macro et j'obtiens les colonnes B et C automatiquement remplies avec les valeurs de E et F de la feuille 1 correspondant au numéro 52 figurant colonne A.

Merci d'avance pour vos réponses,

Julien
A voir également:

4 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
Bonjour

autre manière que l'ami Pijaku (re)
la macro se déclenche dès que tu valides un numéro dans la colonne A feuil2

Private Sub Worksheet_Change(ByVal Target As Range)  
If Not Intersect(Target, Columns("A")) Is Nothing Then  
     lig2 = Target.Row  
     With Sheets(1)  
          lig1 = .Cells.Rows.Count  
          On Error GoTo erreur  
          lig1 = .Columns("A").Find(Target.Value, .Cells(lig1, "A"), xlValues).Row  
          Range(Cells(lig2, "B"), Cells(lig2, "C")) = .Range(.Cells(lig1, "E"), .Cells(lig1, "F")).Value  
     End With  
End If  
Exit Sub  
erreur:  
     MsgBox " le numéro " & Target & " est inconnu dans la liste des dossiers", vbCritical  
End Sub  

pour installer:
faire un copier de la macro ci dessus
clic droit sur le nom d'onglet feuil2
-visualiser le code
coller
Michel
1
Christof422 Messages postés 871 Date d'inscription   Statut Membre Dernière intervention   212
 
Il faut faire une boucle pour trouver a quelle ligne correspond ton numero de dossier. (boucle for). une fois qu tu a trouver le numero tu arrete la boucle (exit for).

Et tu selectionne les colonne qui 'interesse (b + nombre,c +nombre,e +nombre,f + nombre) (nombre corespondant a la colonne ou se trouve ton numero de dossier).

Ensuite tu copie la selection

Puis tu colle la selection sur ta feuille 2.

Si tu ne comprend pas un tru je pourrai t'aider un peu plus.
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 759
 
Bonjour,
Pourquoi faire une boucle pour rechercher une valeur? La méthode find semble toute indiquée...
Exemple :
Sub cherche()
Dim Trouve As Range
Dim Valeur_cherchee, Valeur_trouvee As String
With Sheets("Feuil2")
    Valeur_cherchee = .Cells(1, 1)
End With
With Sheets("Feuil1")
    Set Trouve = .Columns(1).Cells.Find(what:=Valeur_cherchee)
        If Trouve Is Nothing Then
            MsgBox "Pas trouvé"
        Else
            Valeur_trouvee = Trouve.Offset(0, 1).Value
        End If
End With
With Sheets("Feuil2")
    .Cells(1, 2) = Valeur_trouvee
End With
Set Trouve = Nothing
End Sub

Si vous souhaitez de plus amples explications, n'hésitez pas...
0
Christof422 Messages postés 871 Date d'inscription   Statut Membre Dernière intervention   212
 
oui, j'y avais pensé. mais bon je suis tres loin d'etre un pro du vba^^.

Donc je prefere donné une solution simple qui marcherai, mais bon qui ne sera pas forcement optimale.
0
julien
 
J'ai testé le code de michel_m, ça marche nickel !! je l'adapte à mon problème et le duplique pour d'autres feuilles !!

Un grand merci à tous,

Bonne fin de journée,

julien
0