VBA: calcul avec nombre de lignes variable

Résolu/Fermé
Signaler
Messages postés
23
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
6 juin 2014
-
Messages postés
23
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
6 juin 2014
-
Bonjour,

Je suis sur un document qui va me chercher un nombre variable d'informations en fonction de ce que l'utilisateur entre comme données au début.

L'extraction des données est faite mais je souhaite dorénavant effectuer des calculs et insertion de tableau ou autres.

Mes données sont sur 8 colonnes et sur un nombre de lignes variable, je cherche donc à définir le nombre de lignes afin d'effectuer un calcul sur la 9ème colonne,

Le code que j'ai

DernLigne = ActiveSheet.Rows.Count

x = 75
y = 65
z = 67

If x < 91 Then
For i = 2 To DernLigne
Range(Chr(x), i).FormulaLocal = "=" & Chr(x - 8) & "," & i & "-" & Chr(x - 6) & "," & i & "-" & Chr(x - 3) & "," & i

Next
x = x + 9
Else
If z < 91 Then
For i = 2 To DernLigne
Range(Chr(y) & Chr(z), i) = Range(Chr(y) & Chr(z - 8), i) - Range(Chr(y) & Chr(z - 6), i) - Range(Chr(y) & Chr(z - 3), i)
Next
z = z + 9
Else
y = y + 1
z = z - 26
For i = 2 To DernLigne
Range(Chr(y) & Chr(z), i) = Range(Chr(y) & Chr(z - 8), i) - Range(Chr(y) & Chr(z - 6), i) - Range(Chr(y) & Chr(z - 3), i)
Next
End If
End If

J'ai essayé plusieurs méthodes de calcul pour DernLigne, aucune ne fonctionne pour le moment.

Si quelqu'un a une idée.

Merci d'avance




Merci !
NyectoD
A voir également:

2 réponses

Bonjour,

Pour définir le nombre de ligne d'un Tableau Il faut que tu choisisses la colonne ou t'es sur que la dernière cellule est représentatif de la longueur de ton tabelau.

Supposons que ce soit la colonne A

Tu tappes alors ce code.

Nb_Ligne = cells(rows.count,1).end(xlup).row

La variable Nb_Ligne renverra la position de la dernière cellule de la colonne A qui est pleine.

Manuellement, ça en revient à :
- Cliquer sur la dernière ligne de la feuille de la colonne A
A66635 pour les version Excel 2007 et inférieur ou A1048576 pour les version 2010 et suppérieur.
- Faire CTRL + Flèche du haut
- Et enfin aller récupéré le n° de la ligne de la cellule sélectionné.
3
Messages postés
23
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
6 juin 2014
1
Merci de ta réponse rapide.

J'avais déjà essayé quelque chose du genre mais la valeur que j'ai avec ton instruction est 1 ce qui pour une instruction de type For i = 2 to Valeur est gênant.

0
Tu l'as testé sur ton tableau ?

Ci joint un fichier exmple ça fonctionne parfaitement :

http://cjoint.com/?DDolWr5ZHPz
0
Messages postés
23
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
6 juin 2014
1
Je l'ai testé, il me renvoie 1.

Après, la macro que j'exécute créé un nouveau document et les calculs que j'effectue se font sur l'autre document, normalement, en spécifiant que je me trouve sur l'autre document et sur la bonne feuille de calcul, cela fonctionne mais là non.

Je continue à chercher, car ta formule est correcte, cela vient de mes paramètres particuliers.
0
Là il me faut le fichier original pour que je comprenne.Enlèves les données confidentielle et joint le lien généré sur le site cijoint.fr
0
Messages postés
23
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
6 juin 2014
1
Voilà le fichier,

Je travaille sur ce qui est tout en bas, le reste n'est certes pas très joli mais fonctionne.
(Je sais que je dois créer une procédure pour simplifier la chose mais ce n'est pas une priorité)

https://www.cjoint.com/?3DooRngWgKP

Merci d'avance
0
Le problème ne viens pas de ta formule mais plus du fichier actif à ce moment là.

En fait le Fichier qu'il crée, il l'ouvre sur une nouvelle fenêtre Excel. donc même si tu vas dans Fenêtre pour switcher manuellement tu ne verra dans la liste qu'un seul fichier et non 2.

Même si tu utilise le code :
Compte_fichier_ouvert = workbooks.count
Il te donnera 1 et non 2

Il faut que tu te débrouille pour que ton 2eme fichier soit créé dans la même session Excel que ton fichier principal.

J'espère être clair.
0