A voir également:
- Macro de "compter ligne avec critère" qu
- Macro logiciel - Télécharger - Organisation
- Apparaitre hors ligne whatsapp - Guide
- Aller à la ligne excel - Guide
- Apparaitre hors ligne instagram - Guide
- Site de vente en ligne particulier - Guide
8 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
24 août 2009 à 14:42
24 août 2009 à 14:42
Salut,
On va tenter de t'aider...
1) nombre de lignes "non vides" :
Sheets("Feuil2").Range("B1").Value = Cells.SpecialCells(xlCellTypeLastCell).Row ' "mot à mot" : Feuille2!CelluleB1 valeur = nombre de lignes "non vides"
2) nombre de lignes contenant xxx dans la colonne A :
Dim cpt as integer, derlig as integer, i as integer 'déclaration des variables
derlig = Sheets("Feuil1").Range("A65536").End(xlUp).Row ' stocke dans la variable derlig le n° de la dernière ligne "non vide"
For i = 1 To derlig
If Cells(i, 1).Value = "xxx" Then 'Si la cellule (ième ligne, 1ère colonne) contient xxx alors
cpt = cpt + 1 ' on ajoute 1 au compteur
End If ' sinon on fait rien et on continue
Next ' i suivant...
Sheets("Feuil2").Range("B2").Value = cpt ' une fois qu'il a fait toutes les lignes, nous renvoie le nbre de fois ou excel a "croisé" xxx dans la colonne A et l'inscrit dans la feuille2 B2
3) on verra après... Essaye déjà d'intégrer et d'adapter ces 2 codes et reviens nous...
On va tenter de t'aider...
1) nombre de lignes "non vides" :
Sheets("Feuil2").Range("B1").Value = Cells.SpecialCells(xlCellTypeLastCell).Row ' "mot à mot" : Feuille2!CelluleB1 valeur = nombre de lignes "non vides"
2) nombre de lignes contenant xxx dans la colonne A :
Dim cpt as integer, derlig as integer, i as integer 'déclaration des variables
derlig = Sheets("Feuil1").Range("A65536").End(xlUp).Row ' stocke dans la variable derlig le n° de la dernière ligne "non vide"
For i = 1 To derlig
If Cells(i, 1).Value = "xxx" Then 'Si la cellule (ième ligne, 1ère colonne) contient xxx alors
cpt = cpt + 1 ' on ajoute 1 au compteur
End If ' sinon on fait rien et on continue
Next ' i suivant...
Sheets("Feuil2").Range("B2").Value = cpt ' une fois qu'il a fait toutes les lignes, nous renvoie le nbre de fois ou excel a "croisé" xxx dans la colonne A et l'inscrit dans la feuille2 B2
3) on verra après... Essaye déjà d'intégrer et d'adapter ces 2 codes et reviens nous...
Excuse moi mais la première macro n'a pas l'air de marcher, tu veux bien l'expliquer un peu stp.
Dsl je suis débutant.
Dsl je suis débutant.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
24 août 2009 à 15:09
24 août 2009 à 15:09
N'a pas l'air de marcher???
Quel est le message d'erreur?
Quel est le message d'erreur?
Autant pour moi la première marche bien, j'avai du mal à saisir mais c'est bon j'avai juste zapper un truc à modif, je vais test la deuxième. MERCI beaucoup
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Wahhhhou merci un max, ca marche et meme très bien!!!
Je me doute que l'autre macro est plus dur, dit moi si tu veux plus d'explication je vais essayer deux ou trois truc avec comee base ta deuxième macro.
Merci infiniment
Je me doute que l'autre macro est plus dur, dit moi si tu veux plus d'explication je vais essayer deux ou trois truc avec comee base ta deuxième macro.
Merci infiniment
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
24 août 2009 à 15:28
24 août 2009 à 15:28
Tu peux effectivement partir de la macro donnée ci dessus. Un peu comme ceci :
For i = 1 To derlig
If Cells(i, 1).Value = "xxx" Then
cpt = cpt + Cells(i, 1).Offset(0, 2).Value ' tu ajoutes au compteur la valeur contenue dans la cellule se trouvant 2 colonnes à droite de la cellule (i, 1)
End If
Next
Sheets("Feuil2").Range("B2").Value = cpt
Explication sur Cells(i, 1).Offset(0, 1) :
Cells(i, 1) pas de souci??? = cellule ligne i colonne 1 (A)
Offset(0, 1) [ligne, colonne] renvoie à la cellule située 0 ligne en dessous et 1 colonne à droite
Offset(2, 3) : renvoie à la cellule située 2 lignes en dessous et 3 colonnes à droite
Offset(-12, -30) : renvoie à la cellule située 12 lignes au dessus et 30 colonnes à gauche
For i = 1 To derlig
If Cells(i, 1).Value = "xxx" Then
cpt = cpt + Cells(i, 1).Offset(0, 2).Value ' tu ajoutes au compteur la valeur contenue dans la cellule se trouvant 2 colonnes à droite de la cellule (i, 1)
End If
Next
Sheets("Feuil2").Range("B2").Value = cpt
Explication sur Cells(i, 1).Offset(0, 1) :
Cells(i, 1) pas de souci??? = cellule ligne i colonne 1 (A)
Offset(0, 1) [ligne, colonne] renvoie à la cellule située 0 ligne en dessous et 1 colonne à droite
Offset(2, 3) : renvoie à la cellule située 2 lignes en dessous et 3 colonnes à droite
Offset(-12, -30) : renvoie à la cellule située 12 lignes au dessus et 30 colonnes à gauche
Wahoooo tu m'épates il me faut plus de temps pour tester et comprendre ta macro que toi pour la réaliser. Je suis épaté.
Maintenant on atteint le niveau le plus dur (ca va encore etre un jeu d'enfant pour toi à tout les coup mais bon....)
Je voudrai encore une adaptation de ta dernière macro. Je m'explique je voudrai que cette macro me calcul pour chaque ligne i, le produit des cellules Oi et Vi (je vais appeler la valeur OV ce sera plus facile à expliquer ) et que pour les y lignes non vides de mon tableau les valeurs soient sommées et là encore le résultats ira dans une cellule de la feuille 2 (on dira C1).
En gros OV ligne 0+ OV ligne 1+ OV ligne 2+....+OV dernière ligne non vide.
Merci encore de ton aide je vais pouvoir maintenant avancer et bosser sur ce que tu m'as donner.
Maintenant on atteint le niveau le plus dur (ca va encore etre un jeu d'enfant pour toi à tout les coup mais bon....)
Je voudrai encore une adaptation de ta dernière macro. Je m'explique je voudrai que cette macro me calcul pour chaque ligne i, le produit des cellules Oi et Vi (je vais appeler la valeur OV ce sera plus facile à expliquer ) et que pour les y lignes non vides de mon tableau les valeurs soient sommées et là encore le résultats ira dans une cellule de la feuille 2 (on dira C1).
En gros OV ligne 0+ OV ligne 1+ OV ligne 2+....+OV dernière ligne non vide.
Merci encore de ton aide je vais pouvoir maintenant avancer et bosser sur ce que tu m'as donner.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
24 août 2009 à 16:02
24 août 2009 à 16:02
Rien compris........
En fait je cherche à faire une macro qui va balayer toutes les lignes de mon tableauet qui fera:
-pour chaque chaque ligne "i" elle multiplira la valeur de la cellule "Oi" par la valeur de la cellule "Vi"
(pour plus de clarté j'appelerai le résultats de ce produit "OVi")
-et elle sommera les toutes les valeurs OVi des lignes non vides de mon tableau et écrira le résultat dans la cellule C1 de la feuille 2.
En gros une formule du style: SOMME de j=1 à j=dernière ligne non vide,[ des PRODUITs des valeurs contenues dans les cellules Oi et Vi] (i étant le numéro de la ligne balayée)
-pour chaque chaque ligne "i" elle multiplira la valeur de la cellule "Oi" par la valeur de la cellule "Vi"
(pour plus de clarté j'appelerai le résultats de ce produit "OVi")
-et elle sommera les toutes les valeurs OVi des lignes non vides de mon tableau et écrira le résultat dans la cellule C1 de la feuille 2.
En gros une formule du style: SOMME de j=1 à j=dernière ligne non vide,[ des PRODUITs des valeurs contenues dans les cellules Oi et Vi] (i étant le numéro de la ligne balayée)
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
24 août 2009 à 16:23
24 août 2009 à 16:23
peut être comme ceci non?
cpt = 0
For i = 1 To derlig
If Cells(i, 1) <> "" Then 'Si cellule ligne i colonne A est non vide alors
cpt = cpt + (Cells(i, 1).Offset(0, 14).Value * Cells(i, 1).Offset(0, 21).Value)
End If
Next
Sheets("Feuil2").Range("C1").Value = cpt
On reste dans la même idée
cpt = 0
For i = 1 To derlig
If Cells(i, 1) <> "" Then 'Si cellule ligne i colonne A est non vide alors
cpt = cpt + (Cells(i, 1).Offset(0, 14).Value * Cells(i, 1).Offset(0, 21).Value)
End If
Next
Sheets("Feuil2").Range("C1").Value = cpt
On reste dans la même idée
Je vais tester ca sous toutes les coutures et je te dirai si tout va bien....mais d'après ce que je viens de voir tout devrais aller.
J'ai encore un leger soucis, il y a sur ma feuille 1 des filtres automatiques, existe t'il une possibilté pour les macros s'appliquent sur la feuille filtrées.
Ce que je dire par la:
imaginons que j'ai une feuille avec 1000 lignes non vides, si j'applique la toute première macro elle me dira que j'ai mille lignes non vides, mais si par exemple en utilisant un de mes filtres automatiques je n'ai plus que 100 lignes, comment faire pour qu'elle medise que je n'ai que 100 lignes?
J'ai encore un leger soucis, il y a sur ma feuille 1 des filtres automatiques, existe t'il une possibilté pour les macros s'appliquent sur la feuille filtrées.
Ce que je dire par la:
imaginons que j'ai une feuille avec 1000 lignes non vides, si j'applique la toute première macro elle me dira que j'ai mille lignes non vides, mais si par exemple en utilisant un de mes filtres automatiques je n'ai plus que 100 lignes, comment faire pour qu'elle medise que je n'ai que 100 lignes?