Reporter une cellule texte en fonction d'autres cellules arguments sur la même ligne

Skaori

XLDnaute Nouveau
Bonjour à tous,

J'ai un petit problème à vous soumettre.

Voilà j'ai un tableau énorme de données brutes (plus de 10 000 lignes et une bonne 50aine de colonnes dont certaines ne m'intéressent pas). Je dois l'exploiter et j'ai donc décider de "classifier" les choses dans une nouvelle matrice de données plus claires et concise afin d'éviter des tris sur chaque colonne et qui irait "piocher" des données dans la grosse matrice.

Ce que je recherche donc à faire c'est dire à Excel : "si dans la colonne 1 de la grosse matrice est écrit "ça" et que dans la colonne 2 de la grosse matrice est écrit "ça" alors dans ma cellule destination je veux reporter ce qu'il y a d'écrit dans la colonne 45 de la grosse matrice.

Je m'excuse je ne peux pas linker de fichier exemple pour le moment, mon proxy me l'interdit...

Merci d'avance !
Skao
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Reporter une cellule texte en fonction d'autres cellules arguments sur la même l

Bonjour Skao, bonjour le forum,

Peut-être comme ça (à adapter à ton cas) :
Code:
Sub Macro1()
Dim o1 As Object 'déclare la variable o1 (Onglet 1 - celui de la grosse matrice)
Dim o2 As Object 'déclare la variable o2 (Onglet 2 - celui de destination)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Rang 'déclare la variable dest (cellle de DESTination)

Set o1 = Sheets("Feuil1") 'définit l'onglet o1
Set o2 = Sheets("Feuil2") 'définit l'onglet o2
'boucle sur toutes les cellules éditées de la colonne A de l'onglet o1
For Each cel In o1.Range("A1:A" & o1.Cells(Application.Rows.Count, 1).End(xlUp).Row)
    'condition : si la cellule contient "ça" et la cellule de la colonne B contient "ça"
    If cel.Value = "ça" And cel.Offset(0, 1).Value = "ça" Then
        'définit la cellule de destination (première cellule vide de la colonne A de l'onglet o2)
        Set dest = o2.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
        cel.Offset(0, 44).Value.Copy dest 'copie la cellule de la colonne 45 et la colle dans dest (avec formats)
        'dest.Value = cel.Offset(0, 44).Value (sans les formats)
    End If 'fin de la condition
Next cel 'prochaine celluel de la boucle
End Sub
 

JNP

XLDnaute Barbatruc
Re : Reporter une cellule texte en fonction d'autres cellules arguments sur la même l

Bonjour Skori, salut Robert :),
Pour chercher Toto7 en A et Marcel7 en B :
Code:
=SIERREUR(INDEX($AS$1:$AS$20000;EQUIV("Toto7"&"Marcel7";$A$1:$A$20000&$B$1:$B$20000;0));"")
Formule matricielle à valider impérativement avec Ctrl+Maj+Enter.
A adapter :rolleyes:...
Bonne suite :cool:
 

Skaori

XLDnaute Nouveau
Re : Reporter une cellule texte en fonction d'autres cellules arguments sur la même l

Merci beaucoup à vous deux ! (la vache ça fait plaisir de poster, d'aller manger et quand on revient de pouvoir directement essayer des solutions !!)

Alors je vais commencer avec celle de Robert. J'ai besoin de quelques précisions, je suis nul de chez nul en VBA.. (par contre je comprends vite quand on m'explique longtemps !)

Alors pourrais-tu stp me donner les étapes à suivre pour coder cette macro stp ?

Merci d'avance et encore bravo pour votre réactivité !
Skao
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Reporter une cellule texte en fonction d'autres cellules arguments sur la même l

Bonjour le fil, bonjour le forum,

Ben tout est commenté je peux difficilement faire plus... Sinon faut que je prenne ma mobylette, que je vienne chez toi... Ça va être compliqué...
 

Skaori

XLDnaute Nouveau
Re : Reporter une cellule texte en fonction d'autres cellules arguments sur la même l

Non on devrait pouvoir faire sans ta mob !

Effectivement tout est commenté et très clair, je l'ai même adapté à mon petit exemple avant de passer sur le grooos fichier.

Ce que je ne connais pas c'est comment implementer cela dans VBA et comment y faire référence dans ma feuille Excel ? (Les bases de VBA en fait !)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Reporter une cellule texte en fonction d'autres cellules arguments sur la même l

Bonjour le fil, bonjour le forum,

Si tu as adapté alors tu sais faire non ?

Bon... Alors,
• tu ouvres ton fichier
• tu ouvre l'éditeur VBE (Visual Basic Editor) avec [Alt]+[F11]
• tu double-cliques dans le cadre en haut à gauche sur le projet qui porte le nom du fichier pour le sélectionner
• Menu Insertion/Module
• ça rajoute un dossier Module et un module nommée Module1 par défaut
• tu double-cliques dans Module1 pour le sélectionner
• tu copies le code que je t'ai proposé dans le grand réctangle à droite
• tu ferme VBE avec [Alt]+[F11]

Pour lancer la macro1 :
• [Alt]+[F8]
et clique sur Macro1 dans la liste... Option 1

• ajoute un rectangle (ou tout autre forme) de la barre d'outil dessin
• clic du bouton droit dessus
• option Affecter une macro...
• clique sur Macro1 dans la liste... Option 2
La macro sera lancée à chaque clic sur la forme...

Finalement tu m'as fait prendre la mobylette...
 

Skaori

XLDnaute Nouveau
Re : Reporter une cellule texte en fonction d'autres cellules arguments sur la même l

Et voilà ! :D

Désolé de t'avoir faire user de l'essence. En fait l'option qui colle la valeur avec le format d'origine ne marche pas, j'ai donc choisis le collage sans le format, et la macro fonctionne.

Merci pour le petit cours de VBA en tout cas !
 

JNP

XLDnaute Barbatruc
Re : Reporter une cellule texte en fonction d'autres cellules arguments sur la même l

Re :),
Et voilà ! :D

Désolé de t'avoir faire user de l'essence. En fait l'option qui colle la valeur avec le format d'origine ne marche pas, j'ai donc choisis le collage sans le format, et la macro fonctionne.

Merci pour le petit cours de VBA en tout cas !
C'est sympa de savoir que ma formule n'a même pas été testée :(...
@ Robert : TDC or not TDC, that is the question :rolleyes:...
Bonne soirée :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 180
Messages
2 085 991
Membres
103 081
dernier inscrit
jeromeolivier.raymond@wat