• Initiateur de la discussion Initiateur de la discussion thyuki
  • Date de début Date de début

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 !

thyuki

XLDnaute Nouveau
bonjour à tous

j'essaie de faire une macro qui me permet de créer une nouvelle colonne pour le mois en cours en copiant la colonne à gauche (celle du mois précédent). puis je fais un rechercheV sur la cellule C de la ligne même ligne, sur la colonne G d'une autre feuille.

voici mon code:
Code:
Function MAJDispo()
'fonction pour l'onglet Dispo CR1
    
    'recherche de la dernière colonne non vide
    derniereColonne = Worksheets("Dispo CR1").Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    nouvelleColonne = derniereColonne + 1
    
    'l'activation de l'onglet est nécessaire pour la bonne éxecution
    Worksheets("Dispo CR1").Activate
    
    'copie de la dernière colonne à coté
    Worksheets("Dispo CR1").Range(Cells(1, derniereColonne), Cells(60, derniereColonne)).Copy Worksheets("Dispo CR1").Cells(1, nouvelleColonne)

    'renommage au mois en cour
    Worksheets("Dispo CR1").Cells(1, nouvelleColonne).Value = Month(Date) & "/01/" & Year(Date)
    
    'recherche de la taille du tableau qui sert de matrice au rechercheV
    derniereLigne = Worksheets("log_Dispo").Range("A1").End(xlDown).Address
    derniereLigne = Worksheets("log_Dispo").Range(derniereLigne).Row
    derniereCol = Worksheets("log_Dispo").Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    

    Worksheets("Dispo CR1").Range(Cells(2, nouvelleColonne)).Formula = "=RECHERCHEV($C2;log_Dispo!$A$1:" &_ Cells(derniereLigne, derniereCol).Address & ";7;FAUX)"

Et comme d'hab' j'ai une erreur 1004 erreur défini par l'application ou par l'objet sur la dernière ligne de code.

Pouvez-vous me dire ou cela bloque car là je ne comprends pas je veux juste affecter une formule a une cellule, pour ensuite l'étendre a tout mon tableau
 
Re : erreur formula

Bonjour le fil
Maitre PJ

Tu peux également changer ton code de la façon suivante 😉
Code:
' fonction pour l'onglet Dispo CR1
Function MAJDispo()
  'recherche de la dernière colonne non vide
  With Sheets("Dispo CR1")
    ' l'activation de l'onglet est nécessaire pour la bonne éxecution : NON pas forcément
    '.Activate
    derniereColonne = .Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    nouvelleColonne = derniereColonne + 1
    'copie de la dernière colonne à coté
    .Range(.Cells(1, derniereColonne), .Cells(60, derniereColonne)).Copy Destination:=.Cells(1, nouvelleColonne)
    'renommage au mois en cour
    .Cells(1, nouvelleColonne).Value = Month(Date) & "/01/" & Year(Date)
  End With
  With Sheets("log_Dispo")
    'recherche de la taille du tableau qui sert de matrice au rechercheV
    derniereLigne = .Range("A1").End(xlDown).Row
    derniereCol = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
  End With
  With Sheets("Dispo CR1")
    .Range(Cells(2, nouvelleColonne)).FormulaLocal = "=RECHERCHEV($C2;log_Dispo!$A$1:" & Cells(derniereLigne, derniereCol).Address & ";7;FAUX)"
  End With
End Sub

A+
 
Re : erreur formula

Bonjour,

Déjà, la première chose à faire est de faire une sub et non une fonction, une fonction retourne une valeur ou un tableau de valeurs mais n'exécute pas des commandes.
Pour ta formule, utilise VLOOKUP avec Formula et bien sur des virgules en lieu et place des points-virgules :
Code:
Worksheets("Dispo CR1").Cells(2, nouvelleColonne).Formula = "=VLOOKUP($C2,log_Dispo!$A$1:" & Cells(derniereLigne, derniereCol).Address & ",7,False)"

Hervé.
 
Re : erreur formula

Re

Salut ami Bruno 🙂 🙂
Salut Theze (suis tout à fait d'accord)

Avec formula il faut ecrire les noms de formule in english , avec formulaLocal il faut ecrire dans la langue de l'Excel installé

Pour debuguer , je crains que le fichier (ou une copie eventuellement epurée ) ne soit necessaire
 
Re : erreur formula

Re,

Il te faut virer le Range :
Code:
.Cells(2, nouvelleColonne).FormulaLocal = "=RECHERCHEV($C2;log_Dispo!$A$1:" & Cells(derniereLigne, derniereCol).Address & ";7;FAUX)"
et non :
Code:
.Range(Cells(2, nouvelleColonne)).FormulaLocal = "=RECHERCHEV($C2;log_Dispo!$A$1:" & Cells(derniereLigne, derniereCol).Address & ";7;FAUX)"

Hervé.
 
- 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
5
Affichages
552
Réponses
0
Affichages
459
Réponses
7
Affichages
619
Réponses
2
Affichages
511
Réponses
3
Affichages
829
Réponses
12
Affichages
988
Réponses
2
Affichages
591
Retour