Macro excel mise en forme
matbleu
-
Heliotte Messages postés 1561 Statut Membre -
Heliotte Messages postés 1561 Statut Membre -
Bonjour,
J'ai besoin d'un coup de main pour terminer un fichier excel...
J'ai fait la macro suivante qui fonctionne très bien :
With Sheets(4)
.Range("AC5:AC27").Value = WorksheetFunction.VLookup(.Range("B5:B27").Value, Sheets(11).Range("C3:I24"), 7, False)
End With
End Sub
sauf que :
Problème 1 : AC5:AC27 est en réalité variable...ce mois ci c'est la colonne AC mais le mois prochain mes données doivent venir à la suite du tableau c'est à dire en AD et ainsi de suite chaque mois...
comment lui dire de coller les données sur la dernière colonne vide...en utilisant une dimension?
j'ai également besoin de mettre en forme cette colonne créée au format de la précédente (ou plus simplement au format de la colonne C si c'est plus facile à faire)
aussi, j'ai besoin d'un TOTAL pour la colonne ajoutée...il sera toujours sur la ligne 28...=somme(AC5:AC27) ce mois ci par exemple...
enfin, il se peut que des #N/A apparaissent avec le vlookup s'il ne trouve rien...je souhaite qu'il les remplace ces #N/A par 0
Merci beaucoup de votre aide ...
J'ai besoin d'un coup de main pour terminer un fichier excel...
J'ai fait la macro suivante qui fonctionne très bien :
With Sheets(4)
.Range("AC5:AC27").Value = WorksheetFunction.VLookup(.Range("B5:B27").Value, Sheets(11).Range("C3:I24"), 7, False)
End With
End Sub
sauf que :
Problème 1 : AC5:AC27 est en réalité variable...ce mois ci c'est la colonne AC mais le mois prochain mes données doivent venir à la suite du tableau c'est à dire en AD et ainsi de suite chaque mois...
comment lui dire de coller les données sur la dernière colonne vide...en utilisant une dimension?
j'ai également besoin de mettre en forme cette colonne créée au format de la précédente (ou plus simplement au format de la colonne C si c'est plus facile à faire)
aussi, j'ai besoin d'un TOTAL pour la colonne ajoutée...il sera toujours sur la ligne 28...=somme(AC5:AC27) ce mois ci par exemple...
enfin, il se peut que des #N/A apparaissent avec le vlookup s'il ne trouve rien...je souhaite qu'il les remplace ces #N/A par 0
Merci beaucoup de votre aide ...
A voir également:
- Macro excel mise en forme
- Mise en forme conditionnelle excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Mise en forme tableau croisé dynamique - Guide
2 réponses
1) Quand tu dit: comment lui dire de coller les données sur la dernière colonne vide...en utilisant une dimension? , tu veux dire "première colonne vide ? si oui, alors:
DernCol = (Cells(1, Cells.Columns.Count).End(xlToLeft).Column + 1)
2) exemple: tu te place sur la cellule qui va recevoir le total, ex, "AC28", et tu fait:
DernCol = (Cells(1, Cells.Columns.Count).End(xlToLeft).Column + 1)
2) exemple: tu te place sur la cellule qui va recevoir le total, ex, "AC28", et tu fait:
Range("AC28").Select ' rend la cellule "AC28" active
ActiveCell.FormulaR1C1 = "=SUM(R[-23]C:R[-1]C)"
bonjour et merci de ton aide...voilà ou j'en suis :
With Sheets(4)
.Range("AC5:AC27").Value = WorksheetFunction.VLookup(.Range("B5:B27").Value, Sheets(11).Range("C3:I30"), 7, False)
End With
Sheets(4).Select
Range("AC28").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-23]C:R[-1]C)"
Cells.Replace What:="#N/A", Replacement:="0", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
Pour résumer, j'ai compris comment fonctionnait la fonction somme et j'ai trouvé comment remplacer mes #N/A par zéro mais je n'arrive toujours pas à adapter cette macro à mes variables, à savoir :
1) AC5:AC27 doit être remplacé par 1ère colonne vide à droite du tableau
2) AC28 se déplace également tous les mois d'une colonne...
merci d'avance pour ton coup de main
With Sheets(4)
.Range("AC5:AC27").Value = WorksheetFunction.VLookup(.Range("B5:B27").Value, Sheets(11).Range("C3:I30"), 7, False)
End With
Sheets(4).Select
Range("AC28").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-23]C:R[-1]C)"
Cells.Replace What:="#N/A", Replacement:="0", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
Pour résumer, j'ai compris comment fonctionnait la fonction somme et j'ai trouvé comment remplacer mes #N/A par zéro mais je n'arrive toujours pas à adapter cette macro à mes variables, à savoir :
1) AC5:AC27 doit être remplacé par 1ère colonne vide à droite du tableau
2) AC28 se déplace également tous les mois d'une colonne...
merci d'avance pour ton coup de main
D'abord, on parle en français, ce qui donne:
1) rechercher la dernière colonne non-vide,
2) une fois la valeur récupérée, lui ajouter 1 pour évaluer et écrire dans la première colonne vide,
3) comme tu as déjà le numéro de la colonne, tu fais la somme, et tu l'écris à la ligne 28 de cette colonne
Est-ce correct ? ou
1) rechercher la dernière colonne non-vide,
2) évaluer et écrire dans la première colonne vide,
3) comme tu as déjà le numéro de la colonne, tu fais la somme, et tu l'écris à la ligne 28 de cette colonne
La différence entre les 2 solutions, au cas où tu ne le percevrais pas, c'est que, dans la 1ère solution, tu viens écrire toutes les données ET faire la somme dans la première colonne vide, et,
dans la 2èmes solution, tu as déjà les données de la dernière colonne, mais tu veut uniquement faire la somme de XX5 à XX27 dans la cellule de XX28 ??
1) rechercher la dernière colonne non-vide,
2) une fois la valeur récupérée, lui ajouter 1 pour évaluer et écrire dans la première colonne vide,
3) comme tu as déjà le numéro de la colonne, tu fais la somme, et tu l'écris à la ligne 28 de cette colonne
Est-ce correct ? ou
1) rechercher la dernière colonne non-vide,
2) évaluer et écrire dans la première colonne vide,
3) comme tu as déjà le numéro de la colonne, tu fais la somme, et tu l'écris à la ligne 28 de cette colonne
La différence entre les 2 solutions, au cas où tu ne le percevrais pas, c'est que, dans la 1ère solution, tu viens écrire toutes les données ET faire la somme dans la première colonne vide, et,
dans la 2èmes solution, tu as déjà les données de la dernière colonne, mais tu veut uniquement faire la somme de XX5 à XX27 dans la cellule de XX28 ??
merci pour ta réponse rapide...
Je suis dans le 1er cas : ce qui donne:
1) rechercher la dernière colonne non-vide,
2) une fois la valeur récupérée, lui ajouter 1 pour évaluer et écrire dans la première colonne vide,
3) comme tu as déjà le numéro de la colonne, tu fais la somme, et tu l'écris à la ligne 28 de cette colonne
Je suis dans le 1er cas : ce qui donne:
1) rechercher la dernière colonne non-vide,
2) une fois la valeur récupérée, lui ajouter 1 pour évaluer et écrire dans la première colonne vide,
3) comme tu as déjà le numéro de la colonne, tu fais la somme, et tu l'écris à la ligne 28 de cette colonne
Rechercher dernière colonne non-vide, definir la colonne juste après (première colonne vide:
voilà
DernCol = (Cells(1, Cells.Columns.Count).End(xlToLeft).Column + 1)Ecrire dans les cellules via une boucle:
For i = 5 to 27 Cells(i, DernCol).Value = ValeurAEcrire Next iCalculer et écrire la somme dans la cellule de la ligne 28:
Range(Cells(28, DernCol), Cells(28, DernCol)).Select ActiveCell.FormulaR1C1 = "=SUM(R[-23]C:R[-1]C)"
voilà