Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Formule de recherche

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

homernell

XLDnaute Occasionnel
Bonjour à tous,

Déjà merci à tous de me lire.

Je vous explique j'ai un tableau dans lequel j'ai un onglet "données" qui sont les données brut extraite d'un programme, et un onglet "récap" qui retraite l'information.

J'ai fait une formule en recherche (déjà je me suis bien débrouillé vu mon niveau 🥳🥳🥳), néanmoins je ne sais pas comment faire pour qu'il me remonte une somme en fonction d'un condition, je me demande d'ailleurs si je suis clair !!!

Exemple : dans l'onglet données on a plusieurs lignes pour le film Venom, et j'aimerai avoir une récap en fonction des formats et versions de films.

Je vous mets en copie mon fichier peut être plus simple pour vous expert de voir concrètement.

Merci d'avance.
 

Pièces jointes

Bonsoir homernell,
On peut utiliser somme.si.ens comme en PJ :
VB:
=SOMME.SI.ENS(données!I:I;données!C:C;récap!B3;données!E:E;récap!C3;données!F:F;récap!D3)
Attention, dans votre fichier les données "ca" ne sont pas des nombres mais des chaines de caractères. J'ai été obligé dans chaque cellule de sélectionner et faire un return. de plus il y a un espace texte entre milliers et unités.
 

Pièces jointes

Tout d'abord merci mille fois pour la réponse rapide ainsi que la solution par contre je n'ai pas tout compris sur les données CA.
Faut-il que je ressaisisse toutes les données à chaque fois ? si oui ce serait une perte de temps j'imagine..
 
Bonjour,
Le mieux serait que l'import se fasse avec des nombres et non du texte.
Ce qui n'est pas toujours faisable.
Une autre solution est un module VBA qui transforme ce texte en nombre avec :
VB:
Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    With Sheets("données")
        For L = 2 To .Range("L65500").End(xlUp).Row
            .Cells(L, "L") = .Cells(L, "L") * 1
        Next L
    End With
    Application.ScreenUpdating = True
End Sub
Ce code s'exécute automatiquement lorsqu'on sélectionne la feuille "recap"
Evidemment il faut accepter les macro à l'ouverture du fichier.
 

Pièces jointes

Bonjour franchement c'est top du top, tu solutionnes mes problèmes.

Mais si je peux utiliser encore tes services, je viens de faire un test avec un nouvel import, et bizarre j'ai une cellule qui me fait planter, je pense qu'il s'agit encore de format :



Si tu peux m'aider ? s'il te plait
 

Pièces jointes

J'ai remplacé :
VB:
For L = 2 To .Range("L65500").End(xlUp).Row
par
Code:
For L = 1 To .Range("L65500").End(xlUp).Row
Le problème est que si en ligne 1 il a du texte, la conversion crée une erreur donc j'évite l'erreur avec un On error resume next qui saute la ligne suivante si erronée, on a donc :
Code:
Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    With Sheets("données")
        For L = 1 To .Range("L65500").End(xlUp).Row
            On Error Resume Next    ' les données commencent en ligne 2 ou 1, évite erreur si en 1 il y a du texte.
            .Cells(L, "L") = .Cells(L, "L") * 1
        Next L
    End With
    Application.ScreenUpdating = True
End Sub

NB: La macro se lance automatiquement quand on sélectionne la feuille Récap, inutile de la relancer via le bouton.
 
Dernière édition:
Re,

Bonjour à toi, et encore merci,

Nouveau problème ils m'ont changé la mise en page du coup ta macro ne fonctionne plus, peux tu m'aider à nouveau ?
 

Pièces jointes

Bonjour,
Il suffit de remplacer la colonne L par la colonne V.
J'ai remis à jour les formules et modifié la macro :
VB:
Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    With Sheets("données")
        For L = 2 To .Range("V65500").End(xlUp).Row
            If .Cells(L, "V") <> "" Then
                .Cells(L, "V") = Val(Replace(.Cells(L, "V"), " ", "")) * 1
            End If
        Next L
    End With
    Application.ScreenUpdating = True
End Sub
 

Pièces jointes


Merci mais le fichier ne fonctionne pas j'ai l'impression.
Et surtout j'avais plus ou moins compris la logique de remplacement de L par V mais quand je regarde votre macro je vois encore des L (et des V).
 
???
Le L est l'indice du For Next, le V est le nom de la colonne d'où les apostrophes.
Et pourquoi cela ne marche pas ?
En V on a bien les valeurs et en Recap les valeurs sont correctes.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
116
Réponses
6
Affichages
192
Réponses
1
Affichages
117
Réponses
5
Affichages
288
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…