Pb boucle FOR et Paramétrage
jeanraoul65
Messages postés
11
Statut
Membre
-
jeanraoul65 Messages postés 11 Statut Membre -
jeanraoul65 Messages postés 11 Statut Membre -
Bonjour,
J'ai un tableau de valeur
je souhaite afficher en colonne F le résultat du produit des colonne C par D , si D est non vide. Sinon laisser F vide
J'ai créé la macro suivante, mais cela me renvoie un message d'erreur, je pense à cause d'une erreur de syntaxe sur les "".
Sub Total()
Dim LastLigne As Long
Dim i As Integer
LastLigne = Range("b65535").End(xlUp).Row
For i = 4 To LastLigne
Cells(i, 6).FormulaLocal = "=SI(E "& i" <> """"; """" ; D "& i" * E "& i")"
Next i
End Sub
Merci d'avance pour votre aide
J'ai un tableau de valeur
je souhaite afficher en colonne F le résultat du produit des colonne C par D , si D est non vide. Sinon laisser F vide
J'ai créé la macro suivante, mais cela me renvoie un message d'erreur, je pense à cause d'une erreur de syntaxe sur les "".
Sub Total()
Dim LastLigne As Long
Dim i As Integer
LastLigne = Range("b65535").End(xlUp).Row
For i = 4 To LastLigne
Cells(i, 6).FormulaLocal = "=SI(E "& i" <> """"; """" ; D "& i" * E "& i")"
Next i
End Sub
Merci d'avance pour votre aide
A voir également:
- Pb boucle FOR et Paramétrage
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Paramétrage double écran - Guide
- Idm for mac - Télécharger - Téléchargement & Transfert
- Instagram for pc - Télécharger - Divers Communication
- Microsoft store download for pc - Guide
11 réponses
Bonjour,
quand tu inscris une formule par vba il faut utiliser les fonctions en anglais, donc =IF...
Le plus simple pour avoir la traduction est de saisir la formule avec l'enregistreur de macro lancé.
eric
quand tu inscris une formule par vba il faut utiliser les fonctions en anglais, donc =IF...
Le plus simple pour avoir la traduction est de saisir la formule avec l'enregistreur de macro lancé.
eric
Bonjour,
Essaie de faire ça
;o)
Essaie de faire ça
For i = 4 To LastLigne
If Cells(i, 4).Value <> "" Then
Cells(i, 6).Value = Cells(i, 3).Value * Cells(i, 4).Value
End If
Next i
;o)
Ca marche nikel merci , c'est vrai que je me compliquais pour rien ...
DEux petites questions en supplément :
-comment faire pour que la macro se lance directement à chaque fois que je rentre ou modifie une valeur de la colonne D (ma colonne quantité).
-comment faire pour vérouiller le resultat de la cellule F ( resultat de la multiplication de Qté par le Prix unitaire donné par la macro précédente)
Merci encore
DEux petites questions en supplément :
-comment faire pour que la macro se lance directement à chaque fois que je rentre ou modifie une valeur de la colonne D (ma colonne quantité).
-comment faire pour vérouiller le resultat de la cellule F ( resultat de la multiplication de Qté par le Prix unitaire donné par la macro précédente)
Merci encore
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re,
Pour info j'ai construit ma macro sur la feuille excel , en private. est ce la bonne solution ??
Non ce n'est pas la bonne solution ... si la feuille est supprimée, le code est perdu également.
Il est préférable de mettre le code dans un module indépendant (Alt + F11 ... Insertion -> Module)
-comment faire pour que la macro se lance directement à chaque fois que je rentre ou modifie une valeur de la colonne D (ma colonne quantité).
Pas très pratique : Il n'est pas commode d'intercepter un évènement d'une cellule particulière. Il est préférable de mettre un contrôle commandButton sur la feuille ou dans la barre de menu Excel.
-comment faire pour vérouiller le resultat de la cellule F ( resultat de la multiplication de Qté par le Prix unitaire donné par la macro précédente)
Que veux-tu dire par verrouiller ?
Tu peux verrouiller une ou des cellules par : Format -> Cellule ... -> Onglet protection.
;o)
Pour info j'ai construit ma macro sur la feuille excel , en private. est ce la bonne solution ??
Non ce n'est pas la bonne solution ... si la feuille est supprimée, le code est perdu également.
Il est préférable de mettre le code dans un module indépendant (Alt + F11 ... Insertion -> Module)
-comment faire pour que la macro se lance directement à chaque fois que je rentre ou modifie une valeur de la colonne D (ma colonne quantité).
Pas très pratique : Il n'est pas commode d'intercepter un évènement d'une cellule particulière. Il est préférable de mettre un contrôle commandButton sur la feuille ou dans la barre de menu Excel.
-comment faire pour vérouiller le resultat de la cellule F ( resultat de la multiplication de Qté par le Prix unitaire donné par la macro précédente)
Que veux-tu dire par verrouiller ?
Tu peux verrouiller une ou des cellules par : Format -> Cellule ... -> Onglet protection.
;o)
Re Polux,
Donc pour résumer j'ai mes 3 colonnes, Prix , quantité, total calculé
Par verouiller je veux dire qu'il ne soit pas possible de modifier les valeurs des celulles de la colonne "total calculé", les valeur sont issues de la macro précedente et on ne peux pas y toucher en cliquant dessus.
Pour ce qui est de l'automatisation de la macro cela serait quand meme pratique que mon total s'affiche dès que je rajoute une quantité , sans avoir besoin de cliquer sur un bouton.
Bien vu pour ce qui est de private , je n'avais pas du tout pensé à l'aspect suppression
Donc pour résumer j'ai mes 3 colonnes, Prix , quantité, total calculé
Par verouiller je veux dire qu'il ne soit pas possible de modifier les valeurs des celulles de la colonne "total calculé", les valeur sont issues de la macro précedente et on ne peux pas y toucher en cliquant dessus.
Pour ce qui est de l'automatisation de la macro cela serait quand meme pratique que mon total s'affiche dès que je rajoute une quantité , sans avoir besoin de cliquer sur un bouton.
Bien vu pour ce qui est de private , je n'avais pas du tout pensé à l'aspect suppression
Pourquoi passer par une macro ???
Si dans la colonne F tu mets : = SI(D3 <> "";(C3 * D3);"") ... ça le fait pas ?
;o)
Si dans la colonne F tu mets : = SI(D3 <> "";(C3 * D3);"") ... ça le fait pas ?
;o)
Mon tableau est dynamique c'est pour cela que je passe par une macro , ta méthode utilisant = SI(D3 <> "";(C3 * D3);"") reprend mon tout premier post , c'est à dire copier cette formule à l'intérieur des cellules de la colonne C par l'intermediare d'une boucle for ,... ce que je n'arrive pas à faire
Que veux tu dire par "tableau dynamique" ???
Tu dois saisir manuellement les données dans les cellules de colonne C ou D ? le calcul dans la colonne F avec la formule est dynamique ... je ne vois pas trop ce que tu cherches à faire.
;o)
Tu dois saisir manuellement les données dans les cellules de colonne C ou D ? le calcul dans la colonne F avec la formule est dynamique ... je ne vois pas trop ce que tu cherches à faire.
;o)
Ce que je veux dire c'est que mon nombre de ligne dans le tableau n'est pas fixe, ce que je veux faire c'est donc copier la formule jusqu'a la derniere ligne remplie du tableau , d'où mon utilisation de la boucle pour copier la formule jusqu'à cette derniere ligne
Je crois avoir trouvé la solution grace à l'enregistreur nouvelle macro:
Sub Total()
Dim LastLigne As Long
Dim i As Integer
LastLigne = Range("b65535").End(xlUp).Row
For i = 4 To LastLigne
Range("F6").Select
ActiveCell.FormulaR1C1 = "= IF(RC[-1] <> """",(RC[-1] * RC[-2]),"""")"
Range("F6").Select
Selection.AutoFill Destination:=Range("F6:F" & LastLigne), Type:=xlFillDefault
Range("F6:F" & LastLigne).Select
Next i
End Sub
Je ne comprend pas bien la syntaxe du code mais cela à l'air de fonctionner...
Merci quand meme pour ton aide Polux
Sub Total()
Dim LastLigne As Long
Dim i As Integer
LastLigne = Range("b65535").End(xlUp).Row
For i = 4 To LastLigne
Range("F6").Select
ActiveCell.FormulaR1C1 = "= IF(RC[-1] <> """",(RC[-1] * RC[-2]),"""")"
Range("F6").Select
Selection.AutoFill Destination:=Range("F6:F" & LastLigne), Type:=xlFillDefault
Range("F6:F" & LastLigne).Select
Next i
End Sub
Je ne comprend pas bien la syntaxe du code mais cela à l'air de fonctionner...
Merci quand meme pour ton aide Polux