|
|
|
|
Bonjour,
J'essaie de créer ce petit script mais j' arrive pas et pourtant je cherche ! S'il y a des ames charitables capables de m'aider je vous en remercie.
Principe du script :
'on se place dans le feuillet "requête"
'on donne a la valeur K la valeur de l'id situé en "D9"
'ensuite on entre dans le feuillet "logiciel"
'pour K équivalent à la valeur de la colonne A
'alors les données sont entrées dans le tableau[i,j]
'ou i = ligne et j = colonne
'on entre dans le feuillet "requête"
'on recherche la premiere ligne vide
'et on entre les données dans cette ligne vide au fur et à mesure de la boucle
Pour l'instant cela me donne ca mais je dois dire que je commence a secher n'etant pas un pro de ce langage et le decouvrant presque. En espérant que la présentation du script est plutot clair et détaillé.
Sub ExempleTableau()
'Définition des variables
Dim i As Integer, j As Integer
Dim K As Integer
'*Choix du feuillet
Sheets("requête").Select
'*Attribution de l'id a la valeur K
K = Range("D9").Value
'*Définit le tableau à 2 dimensions ainsi que leur taille.
Dim VarTab(1 To 50, 1 To 50) As String
'*On ouvre la feuillet logiciel
Sheets("logiciel").Select
'*Pour i = 1 jusqu'à
For i = 1 To UBound(VarTab, 1) '*boucle sur la 1ere dimension
'* Si k = valeur de i
If Value = K Then
For j = 1 To UBound(VarTab, 2) '*boucle sur la 2eme dimension
'*Alimente les éléments du tableaux
VarTab(i, j) = i & j
'*on entre dans requête
Sheets("requête").Select
'*recherche ligne vide
nli = ActiveSheet.Range("A65356").End(xlUp).Row + 1
'*écrit le résultat du tableau[i,j] dans la ligne vide
ActiveSheet.Cells(nli, i, j) = VarTab(i, j)
Next j
End If
Next i
End Sub
Configuration: Windows XP Firefox 3.0.10
Sans exemple de ton fichier c'est pas facile mais....
|
Le script fonctionne ( merci ) mais ne donne pas ce que je souhaite parce que j'ai sans doute été pas assez clair donc cela est normal.
|
Bonjour,
|
Bonjour Goomis, Bidouilleu
Option Explicit
Const col As Byte = 9 'nombre de colonnes à copier
Sub nettoyer()
'sous macro pour maintenance et essais
Sheets("requête").Range("resultat").Resize(100, col).Clear
End Sub
Sub extraire_svt_id()
Dim ident 'as ? à complèter
Dim nbre_id As Byte
Dim tablo
Dim lig As Byte, cptr_y As Byte, cptr_x As Byte
'prépraration
ident = Range("id_user")
If IsEmpty(ident) Then
MsgBox "identification non demandée", vbCritical
Exit Sub
End If
With Sheets("logiciel")
nbre_id = Application.CountIf(.Columns(1), ident)
ReDim tablo(nbre_id - 1, col - 1)
'collecte des données dans le tableau virtuel
lig = 1
For cptr_y = 0 To UBound(tablo)
lig = .Columns(1).Find(ident, .Cells(lig, 1), xlValues).Row
For cptr_x = 0 To col - 1
tablo(cptr_y, cptr_x) = .Cells(lig, cptr_x + 1)
Next
Next
End With
'restitution dans feuille "requ^te"
nettoyer
Application.ScreenUpdating = False 'fige le défilement de l'écran
Sheets("requête").Activate
With Range("resultat").Resize(nbre_id, col)
.Value = tablo
.Borders.Weight = xlThin 'encadre le tableau
End With
End Sub
ci joint maquette de travail: http://cjoint.com/?lgkpB2mOE6 :-x |
RE bonjour,
|
Salut, michel_M ( ça faisait un moment que l'on ne s'était pas croisés) et Goomis95
|