Recopie automatiquement sous excel - VB

Résolu
julien -  
 julien -
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

4 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. Christof422 Messages postés 990 Statut Membre 213
     
    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
  3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
     
    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
    1. Christof422 Messages postés 990 Statut Membre 213
       
      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
  4. 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