Problème de code
Bonjour, j'ai un petit soucis sur une macro, si quelqu’un pouvais me donner un coup de main...
A priori ce n'est pas sur son écriture, il ne me signale pas d'erreur mais plutôt sur son fonctionnement.
Sub Validation()
Dim WSGestion asWorksheet
Dim Cel As Range
Set WSAG = Worksheets ("AG")
Set WSGestion = Worksheets("Gestion")Je vais pouvoir intervenir sur les feuilles AG et Gestion
Set Cel=WSAG.Range("B2:ZZ2").Find(WSGestion.Range("E5").Value)
If Not Cel Is Nothing ThenJe cherche dans la ligne 2(A partir de la deuxième colonne)de la feuille AG, la valeur qui se trouve dans la cellule E5 de la feuille Gestion (Variable),si je ne la trouve pas je ne fais rien (je voudrais que si la valeur n'est pas trouvée ça affiche un message mais c'est un détail sur lequel je travaillerais plus tard)
With WSAG: .Range(Cells(5,Cell.Column),.Cells(104,Cell.Column)).Value=WSGestion.Range("D11:D110").Value:End With
End If
End SubMaintenant que j'ai trouvé(dans la feuille AG) la colonne dans laquelle se trouve la valeur E5 de la feuille Gestion je vais pouvoir mettre les valeur D11 à D110 de la feuille Gestion dans la colonne trouvée dans la feuille AG de la ligne 5 à la ligne 105 (Cette colonne contient des formules mais en y mettant des valeurs, les formules devraient disparaitre comme si manuellement je faisait un copier/collage spécial(Valeur))
Je termine en fermant les opérations (With, If et Sub)
Je ne comprends pas pourquoi il ne se passe rien quand je lance la macro à partir d'un bouton dans la feuille Gestion (Call Validation)
Merci de votre aide.
Bonjour,
Sans être certain je vois déjà une incohérence dans votre code. Vous déclarez Cel qui est le range résultant de la méthode find mais utilisez la variable Cell dans votre 3ème partie de code. Corrigez Cell par Cel et voyez ce que cela donne.
Que vous affiche la fenêtre d'exploration des variables avec une exécution en mode pas à pas détaillé F8 ? Cel est-il trouvé ?
Cdlt,
Bonjour,
Une proposition !?
Cdlt.
Option Explicit
Public Sub Validation()
Dim WSAG As Worksheet, WSGestion As Worksheet, Cel As Range, vCol
Set WSAG = Worksheets("AG"): Set WSGestion = Worksheets("Gestion")
On Error Resume Next
vCol = Application.Match(WSGestion.Cells(5, 5).Value, WSAG.Rows(2), 0)
If Not IsError(vCol) Then
WSAG.Cells(5, vCol).Resize(100).Value = WSGestion.Cells(11, 4).Resize(100).Value
End If
End SubMerci beaucoup pour vos réponses rapides, j'ai pu faire quelques compléments par rapport à ma situation mais j'ai abandonné mon code pour celui de Jean-Eric.Milles merci