Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Remplissage automatique de cellules

  • Initiateur de la discussion Initiateur de la discussion ultra_v
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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)
 
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
 
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
 
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

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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
156
Réponses
2
Affichages
184
Réponses
15
Affichages
460
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…