Nommer une variable avec une autre variable

Bonjour à tous

J'utilise le VBA à taton et je ne suis même pas sur d'utiliser la bonne dénomination

alors voici ce que j'ai à la base qui fonctionne bien:

'je met la date de demain en haut d'une colonne
Sheets("Auto Planning").Range("B1") = Date + 1

'puis je fais une boucle en utilisant For et Next pour relever les taches qui correspondent à la date de demain 
For n = 6 To 600
'je relève donc les cases contenant la date de demain
If CDate(Sheets("J'apprend").Range("I" & n)) = Date + 1 Then

'et là je définis ma variable tacheJ1 (désolé si variable n'est pas le bon mot) comme étant l'addition de toutes les taches de demain
tacheJ1 = tacheJ1 & Sheets("J'apprend").Range("C" & n) & Chr(10)
End If
Next n

'je vérifie que j'ai bien une tache de définie 
If Len(tacheJ1) <> 0 Then

'et si c'est le cas je reporte le résultat dans une cellule (B2)
Sheets("Auto Planning").Range("B2") = tacheJ1
End If

Jusqu'ici tout fonctionne bien

Le problème c'est que si je veux faire ça pour les 30 prochains jours je dois recopier 30 fois le code en changeant "Date + 1" par "Date +2" et "tacheJ1" par "tacheJ2"

Alors je me suis dit pourquoi ne pas utiliser le même principe mais sans définir le jour. En le remplaçant par "x"

'd'abord je veux que dans ma ligne 1 s'affichent les 30 prochains jours (là déjà je ne suis pas sur de la justesse de la formulation!)
For x = 1 To 30
Sheets("Auto Planning").Range(x & "1") = Date + x

'puis je reprend exactement le même principe sauf que je veux utiliser tacheJx avec x allant de 1 à 30 
For n = 6 To 600
If CDate(Sheets("J'apprend").Range("I" & n)) = Date + x  Then
tacheJ"x" = tacheJ"x" & Sheets("J'apprend").Range("C" & n) & Chr(10)
End If
Next n
If Len(tacheJ"x") <> 0 Then
Sheets("Auto Planning").Range("B2") = tacheJ"x"
End If

Next x

Le problème c'est que je n'ai absolument aucune idée de comment écrire "tacheJx" pour qu'il comprenne que "x" doit varier

J'espère avoir été clair, j'ai essayé de simplifier au maximum mon "code" (écrit comme un bourrin avec beaucoup de répétitions, que justement j'aimerais éviter)

Merci d'avance à tout ceux qui pourrons m'aider

Bonjour,

Pas sûr de savoir t'aider (d'autres y arriveront) mais, pense à joindre un fichier pour faciliter la compréhension du problème et augmenter les chances de te faire aider.

Un exemple de même présentation court et anonymisé suffit

Cdlt

Bonjour lilounice, patrick1957

Comme le dit très justement patrick1957, même si je pense avoir bien compris ce tu cherches à faire... un "petit visuel" de ce que tu as "déjà" nous permettrait de nous pencher concrètement sur ce que tu veux "obtenir"...

PS/ pour ton information, ton vocabulaire est correct... ! nous parlons bien de variables puisque ce sont des informations qui "varient" tout au long du processus défini.

Ok merci à vous

Je pensais que le code suffirait comme il s'agit juste d'un problème de syntaxe VBA (enfin je pense)

Mais je vais faire une version simplifiée de ma feuille ASAP

voici un petit exemple

(ps: si possible j'aimerais rester sur la même "piste" de code. Je suis pas sur de pouvoir adapter une autre approche. Ceci dit toute idée est bonne à prendre!)

Merci beaucoup à vous

17exemple.xlsx (12.06 Ko)

Bonjour lilounice

si je dis : " en fait ce que tu veux faire : c'est transposer une liste de tâches (listées d'après une tâche ou plus) par date EN tâches réparties au jour le jour (Aujourd'hui, Demain...) dans ta feuille "Planning auto" "

C'est correct ?

13exemple.xlsx (19.12 Ko)

Bonjour,

si j'ai compris ... mais avec utilisation d'un dictionnaire

P.

22linounice-xlp.xlsm (26.59 Ko)

@andrea73

Déjà merci

Et oui en effet c'est correct c'est ce que je veux ! Seulement j'ai simplifié, en réalité pour chaque tâche il y a un temps attribué une colonne C dont je fais la somme pour connaître la somme de temps pour chaque jour en fonction des tâches.

Pour cela j'utilise le même principe

Pour Date+1

For n = 6 to 600

Dim tempstotalJ1 as integer

IfCdate (...colonne date...)= Date+1 then

tempstotalJ1 = tempstotalJ1 + (...cellules de temps en face de date +1...) & Chr(10)

Next n

Puis je reporte tempstotalJ1 dans une cellule

De la même manière j'aimerais remplacer ce J1 par Jx

Voilà

Désolé mais je suis sur mon téléphone je ne peux pas non plus regarde votre fichier

En tous cas merci

Merci Patrick pour ta solution malheureusement elle ne collait pas vraiment à mon cas concret

mais à force de persévérance j'ai finit par trouver la solution

il s'agissait bien d'un problème de syntaxe

Private Sub Worksheet_Activate()
For x = 1 To 10
Sheets("F2").Cells(1, x) = Date + x
Sheets("F1").Cells(18, 4) = x

J1T1 = ""
    For n = 2 To 15
    If CDate(Sheets("F1").Range("B" & n)) = Date + x Then
    J1T1 = J1T1 & Sheets("F1").Range("A" & n) & Chr(10)
    End If
    Next n
If Len(J1T1) <> 0 Then
Sheets("F2").Cells(2, x) = J1T1
End If

Dim nbpagesJ1T1 As Integer
nbpagesJ1T1 = 0
For n = 2 To 15
If CDate(Sheets("F1").Range("B" & n)) = Date + x Then
nbpagesJ1T1 = nbpagesJ1T1 + Sheets("F1").Range("C" & n).Value & Chr(10)
End If
Next n
Sheets("F2").Cells(3, x) = nbpagesJ1T1
Next x
End Sub

J'ai donc finit à arriver à mon but

Merci à vous j'aurais quand même appris une nouvelle fonction

19classeur3.xlsm (15.50 Ko)
Rechercher des sujets similaires à "nommer variable"