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

Probleme de recherche (avec macro) pour alimenter un tableau avec des données

D

dj.run

Guest
Bonjour à toutes et à tous,

je viens encore vous demander un coup de pouce, car là je m'enlise.... ploouuf !!!

je vous ai joint un extrait de mon fichier car c'est pas evident à expliquer par ecrit. Mais je vais essayer quand même .

j'ai une feuil qui se nome tab dont les valeurs(codes et nom) changent quand je change de societe grace à un combobox en B1.

j'aimerai quand je change de societe, pouvoir changer la liste des employés, ça c'est OK, j'y arrive et aussi changer les dates de debut et de fin de conges des employes (de AK1 à BK53) .
et là je n'y arrive plus. J'ai essayé avec des formules de calcul type index, et avec des macros mais ça plante tout le temps .

si quelqu'un pouvait me donner un coup de main, je l'en remercie d'avance.

dj.run
 

Pièces jointes

  • extrait2.zip
    14.7 KB · Affichages: 45
  • extrait2.zip
    14.7 KB · Affichages: 39
  • extrait2.zip
    14.7 KB · Affichages: 41
M

michel

Guest
bonjour,

j'ai regardé ton pb cet aprem (le zip avait suivi au départ...)

ci dessous un listing qui transporte les dates d'une personne dans TAB (ca marche).

"il ne reste plus qu'à" boucler ( 3 boucles imbriquées, svp particulièrement casse-pieds à écrire)

en espèrant avoir pu t'aider

à +

Michel. Béziers

Sub essai1()
Dim congé As Range
Dim lig, col, valy, valx As Byte

' Sheets("gel_center").Select
Set congé = Range(Cells(3, 4), Cells(52, 11))
Sheets("TAB").Activate
'initialisations
lig = 4
col = 37
valy = 1
valx = 1
'lig, col, valy, valx à implémenter avec boucles par ex pas de la colonne=3 donc valy est à 2 (pas=1) etc
'dates de début
Cells(lig, col) = congé.Value(valy, valx)
Cells(lig + 1, col) = congé.Value(valy, valx + 2)
Cells(lig + 2, col) = congé.Value(valy, valx + 4)
Cells(lig + 3, col) = congé.Value(valy, valx + 6)

'dates de fin
Cells(lig, col + 1) = congé.Value(valy, valx + 1)
Cells(lig + 1, col + 1) = congé.Value(valy, valx + 3)
Cells(lig + 2, col + 1) = congé.Value(valy, valx + 5)
Cells(lig + 3, col + 1) = congé.Value(valy, valx + 7)

End Sub
 
D

dj.run

Guest
Bonjour à tous,

merci michel de t'etre penché sur mon probleme, je vais essayer de comprendre ton code et je vais essayer de l'adapeter à mon projet .

encore merci à toi

dj.run
 
M

michel

Guest
Re bonjour,

Pour m’occuper ce midi au boulot, j’avais terminé la macro de transfert des dates; manque de chance ou mauvaise manip, les envois ne sont pas partis…

Donc, voiciCe que j’avais fait :

Dans la feuille « tab », création d’une cellule nommée « nombre » calculant le nombre de salariés de la boite (colonne AI par exemple).

Dans la macro, suppression de la variable « valx » complètement inutile et remplacement de « valy » par « cptr »
Ci dessous le code à copier dans vba

Si tu utilises une autre solution, sois sympa de me le signaler pour mes progrès perso.


Amicalement,


Michel. Béziers


Sub essai1()
Dim congé As Range
Dim cptr, nbre, lig, col As Byte

'A COMPLETER: NETTOYAGE DES CELLULES DE DATES...

'application.ScreenUpdating=False

'Sheets("gel_center").activate
Set congé = Range(Cells(3, 4), Cells(52, 11))


Sheets("TAB").Activate


'initialisations
nbre = Range("nombre")
cptr = 1
lig = 4
col = 37

While cptr <= nbre

'lig, col, cptr, valx à implémenter avec boucles par ex pas de la colonne=3 donc cptr est à 2 (pas=1)
' dates de début
Cells(lig, col) = congé.Value(cptr, 1)
Cells(lig + 1, col) = congé.Value(cptr, 3)
Cells(lig + 2, col) = congé.Value(cptr, 5)
Cells(lig + 3, col) = congé.Value(cptr, 7)

'dates de fin
Cells(lig, col + 1) = congé.Value(cptr, 2)
Cells(lig + 1, col + 1) = congé.Value(cptr, 4)
Cells(lig + 2, col + 1) = congé.Value(cptr, 6)
Cells(lig + 3, col + 1) = congé.Value(cptr, 8)

If cptr Mod 9 = 0 Then
col = 37
lig = lig + 9
Else
col = col + 3
End If

cptr = cptr + 1

Wend

End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…