Recopie automatiquement sous excel - VB

Résolu/Fermé
julien - 5 juil. 2011 à 15:43
 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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 5/07/2011 à 16:30
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 mardi 24 mai 2011 Statut Membre Dernière intervention 8 février 2015 212
5 juil. 2011 à 15:56
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
5 juil. 2011 à 16:12
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 mardi 24 mai 2011 Statut Membre Dernière intervention 8 février 2015 212
5 juil. 2011 à 16:21
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
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