Re : realisation d'une macro avec plusieurs variables
Bonjour le forum, Dranreb,
J'ai cherche un peu partout et j'ai vu un post sur lequel vous vous etes penché.
cela ressemble un peu a mon probleme en tout cas pour les tableaux.
j'ai essayé de reprendre votre code et l'adapter suis je sur le bon chemin ?
Comme c parti j'ai peur d'y passer l"année, biensur j'ai envie d'apprendre et donc etre plus autonome, mais je cherche a comprendre et souvent je suis perdu , j'ai apprecie dans le post que j'ai trouvé, comment vous expliquiez , mais je rame malgré tout, je pars sur des hypotheses qui m'echappent apres. je suis intimement coonvaincu que vous avez La solution, et je suis aussi intimement convaincu que vous aimeriez que je la trouve suivant vos explications ( c'est en cela que le coté pedagogique est interressant ) mais y a tant d'elements nouveau pour moi que je perds un temps fou, meme si plutard je pourrai me servir de vos enseignements.
je vous comprends d'ailleurs j'ai fais cela pour mes enfants. mais voila la je patine grave alors comme mes enfants me diraient, mais papaaa aide moi stp, je te promets que j'essayerai de comprendre . et je cedai. ( pour des choses simples ) alors papaaaaaa aides moi stp.
Y a de l'humour la dedans j'espere que vous n'etes pas hermetique, mais je vous garantie que je ne laisserai pas tomber l'apprentissage.
Donc voici le code pris et arranger selon ma comprehension:
Sub For_X_to_Next_Colonne()
Dim PlageDon As Range, TE(), LE&, CE&, TS(), LS&, CS& ' Partout les 1ères lettres
' de Talbeau, Ligne, Colonne, Entrée, Sortie.
Set PlageDon = essai.Rows(3).Find(What:="ask", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Offset(, -1)
Set PlageDon = Intersect(essai.Range(essai.Columns("5"), PlageDon), essai.[3:1048576], essai.UsedRange)
TE = PlageDon.Resize(PlageDon.Rows.Count - 1).Value
ReDim TS(1 To UBound(TE, 1) * UBound(TE, 2), 1 To 6)
For CE = 5 To UBound(TE, 2)
For LE = 3 To UBound(TE, 1)
… (et la suite pareil)
Dim TE(), LE&, CE&, TS(), LS&, CS& ' Partout les 1ères lettres
' de Taleau, Ligne, Colonne, Entrée, Sortie.
Bon ben ça ce sont les déclarations des variables. Les () demande un tableau dynamique, c'est à dire de dimensions indéterminées, d'éléments de type Variant. Les & sont une abréviation pour As Long soit entier codé sur 4 octets.
TE = Intersect(Feuil1.[D5:XFD1048576], Feuil1.UsedRange).Value
Feuil1.[D5:XFD1048576] établit au moyen de la méthode Evaluate de l'objet worksheet dont le nom est Feuil1 la plage allant de la cellule D5 jusqu'à la dernière cellule de la feuille
Feuil1.UsedRange représente la plage effectivement utilisée dans cette même feuille.
Intersect est une méthode de l'objet Application qui rend un objet range représentant l'intersection entre les 2, donc ici de D5 à la dernière utilisée. La propriété Value du Range obtenu est un tableau d'éléments de type Variant, qui est affecté à TE.
ReDim TS(1 To UBound(TE, 1) * UBound(TE, 2), 1 To 6)
Donne ses dimensions au tableau dynamique. UBound(TE, 1) représente le nombre de lignes de TE, UBound(TE, 2) le nombre de colonnes.
For CE = 5 To UBound(TE, 2) - 1
For LE = 3 To UBound(TE, 1) - 1
If TE(LE, CE) <> 0 Then
' Est ce la que je dois mettre le resultat a savoir si <>o donc = Ask donc envoyer la boucle jusqu'a ce que le resultat soit >= $j$1
End Sub
cordialement
Lao31