Remplissage automatique de cellules

ultra_v

XLDnaute Occasionnel
bonjour ,

comment je peux remplir mon tableau A automatiquement , à partir de données enregistré sur B


Merci d'avance
 

Pièces jointes

  • Test.xlsx
    11.7 KB · Affichages: 54
  • Test.xlsx
    11.7 KB · Affichages: 50
  • Test.xlsx
    11.7 KB · Affichages: 58

titiborregan5

XLDnaute Accro
Re : Remplissage automatique de cellules

Bonjour ultra_v, le forum,

le format de ta destination peut-il être modifié?

Je pense qu'il serait plus facile si à chaque colonne correspondait une donnée.
Mais tu me diras, ça revient au tableau précédent...

Du coup, la question, c'est comment souhaites tu l'alimenter?

Via formule? (je ne sais pas faire le changement de personne...)
Via macro?(ça doit être jouable)
 

ultra_v

XLDnaute Occasionnel
Re : Remplissage automatique de cellules

Bonjour titiborregan5
malheureusement le tableau ne doit pas être modifié c'est un formulaire étatique , formule ou macro peu importe l'essentiel le tableau doit étre remplir et alimenter automatiquement , merci
 

ultra_v

XLDnaute Occasionnel
Re : Remplissage automatique de cellules

bonjour ,

merci jocelyn , juste une petite remarque , votre formule ne comprends pas le N° de matricule , et sur le champs "nom et prénom " il affiche que le nom , comment je peux corriger ça ? merci d'avance
 

job75

XLDnaute Barbatruc
Re : Remplissage automatique de cellules

Bonjour ultra_v, titiborregan5, Jocelyn,

Placez cette macro dans le code de la feuille "A" :

Code:
Private Sub Worksheet_Activate()
Dim P As Range, t, i&, j%, k As Variant
With Sheets("B") 'à adapter
  Set P = .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
End With
t = Range("A3:E" & Range("A" & Rows.Count).End(xlUp).Row + 1)
For i = 1 To UBound(t) Step 2
  For j = 2 To 5 'RAZ
    t(i, j) = "": t(i + 1, j) = ""
  Next
  k = Application.Match(t(i, 1), P, 0)
  If IsNumeric(k) Then
    t(i, 2) = P(k, 2) & " " & P(k, 3)
    t(i, 3) = P(k, 5)
    t(i, 4) = P(k, 7)
    t(i, 5) = P(k, 9)
    t(i + 1, 2) = P(k, 4)
    t(i + 1, 3) = P(k, 6)
    t(i + 1, 4) = P(k, 8)
    t(i + 1, 5) = P(k, 10)
  End If
Next
[A3].Resize(UBound(t), 5) = t
Range("B" & UBound(t) + 3 & ":E" & Rows.Count).ClearContents
End Sub
Elle s'exécute quand la feuille est activée.

Elle est rapide car elle utilise le tableau VBA t.

A+
 

Pièces jointes

  • Test(1).xls
    54 KB · Affichages: 42
  • Test(1).xls
    54 KB · Affichages: 42
  • Test(1).xls
    54 KB · Affichages: 43

job75

XLDnaute Barbatruc
Re : Remplissage automatique de cellules

Re,

Cette version (2) est un peu plus rapide avec le tableau "base" :

Code:
Private Sub Worksheet_Activate()
Dim P As Range, base, t(), i&, j%, k As Variant
With Sheets("B") 'à adapter
  Set P = .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
End With
base = Range("A3:A" & Range("A" & Rows.Count).End(xlUp).Row + 1)
ReDim t(1 To UBound(base), 1 To 4) 'base 1
For i = 1 To UBound(t) Step 2
  k = Application.Match(base(i, 1), P, 0)
  If IsNumeric(k) Then
    t(i, 1) = P(k, 2) & " " & P(k, 3)
    t(i, 2) = P(k, 5)
    t(i, 3) = P(k, 7)
    t(i, 4) = P(k, 9)
    t(i + 1, 1) = P(k, 4)
    t(i + 1, 2) = P(k, 6)
    t(i + 1, 3) = P(k, 8)
    t(i + 1, 4) = P(k, 10)
  End If
Next
[B3].Resize(UBound(t), 4) = t
Range("B" & UBound(t) + 3 & ":E" & Rows.Count).ClearContents
End Sub
A+
 

Pièces jointes

  • Test(2).xls
    54 KB · Affichages: 34
  • Test(2).xls
    54 KB · Affichages: 37
  • Test(2).xls
    54 KB · Affichages: 41

Jocelyn

XLDnaute Barbatruc
Re : Remplissage automatique de cellules

re,
Bonjour Job75,

La solution par macro est la solution idéale:), par contre je poste quand même un nouveau fichier de façon a mettre par formule la totalité de la demande
 

Pièces jointes

  • ultra_v.v1.xls
    36 KB · Affichages: 41

job75

XLDnaute Barbatruc
Re : Remplissage automatique de cellules

Bonsoir ultra_v,

le fichier de job75 est limité sur les 2 première ligne ! je ne comprends pas pourquoi ?

Parce que je ne m'étais pas occupé de renseigner la colonne A.

Maintenant cette version (3) copie tout le tableau source :

Code:
Private Sub Worksheet_Activate()
Dim base, t(), n&, i&
With Sheets("B") 'à adapter
  base = .Range("A2:J" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
ReDim t(1 To 2 * UBound(base), 1 To 5) 'base 1
n = -1
For i = 1 To UBound(base)
  n = n + 2
  t(n, 1) = base(i, 1)
  t(n, 2) = base(i, 2) & " " & base(i, 3)
  t(n, 3) = base(i, 5)
  t(n, 4) = base(i, 7)
  t(n, 5) = base(i, 9)
  t(n + 1, 2) = base(i, 4)
  t(n + 1, 3) = base(i, 6)
  t(n + 1, 4) = base(i, 8)
  t(n + 1, 5) = base(i, 10)
Next
If n > 1 Then [A3:E4].Copy [A5].Resize(n - 1, 5) 'pour les formats
[A3].Resize(n + 1, 5) = t
Range("A" & n + 4 & ":E" & Rows.Count).Delete xlUp
End Sub
A+
 

Pièces jointes

  • Test(3).xls
    65.5 KB · Affichages: 50
  • Test(3).xls
    65.5 KB · Affichages: 48
  • Test(3).xls
    65.5 KB · Affichages: 53

Discussions similaires

Réponses
0
Affichages
216

Statistiques des forums

Discussions
312 206
Messages
2 086 201
Membres
103 156
dernier inscrit
Ludo94130