Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Traduction ligne de code

  • Initiateur de la discussion Initiateur de la discussion alain62
  • 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 !

alain62

XLDnaute Nouveau
Bonsoir à tous,

Je souhaiterai dans un 1er temps pouvoir comprendre ceci :

If Target.Column = 11 And Target(1) = "Santé" Then

et plus particulièrement la partie en rouge.


Merci beaucoup
 
Re : Traduction ligne de code

Bonsoir Alain,

Une ligne de code hors de son contexte n'est pas toujours parlante
Cependant Target est en général utilisée dans les procédures évènementielles (Selection_Change, Change, etc...)
Si par exemple c'est dans une procédure Change, Target représente la ou les cellules dont on a modifié le contenu
Dans ce cas

Target.Column = 11
signifie la cellule dont on a changé le contenu est dans la 11ème colonne de la feuille de calcul

Target(1) = "Santé"
signifie la 1ère cellule de Target contient la valeur "Santé"
 
Re : Traduction ligne de code

Bonsoir tototiti2008,

Merci de la réponse.

Private Sub Worksheet_Change(ByVal Target As Range)
' Gestion des dépenses santé (Honoraires)
If Target.Column = 11 And Target(1) = "Santé" Then
x = Sheets("Santé").Range("B" & Rows.Count).End(xlUp).Row + 1
Worksheets("Opérations").Range("B" & Target.Row & ":G" & Target.Row).Copy Destination:=Worksheets("Santé").Range("B" & x)
Sheets("Santé").Range("D" & x).ClearContents
Sheets("Santé").Range("E" & x).ClearContents
End If
End Sub

Voici donc le code.

Mais je devais rajouter une 2eme condition càd dans la 11eme colonne si "santé" ET 15eme colonne si "Dr"

comment faudrait-il l'écrire?

Bonne soirée
 
Re : Traduction ligne de code

Re,

à tester

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
' Gestion des dépenses santé (Honoraires)
Dim bool as boolean
bool = false
    If Target.Column = 11 And Target(1) = "Santé" Then
         if target(1).offset(0,4) = "Dr" then bool = true
    elseif Target.Column = 15 And Target(1) = "Dr" Then
         if target(1).offset(0,-4) = "Santé" then bool = true
    end if
    if bool then
         x = Sheets("Santé").Range("B" & Rows.Count).End(xlUp).Row + 1
         Worksheets("Opérations").Range("B" & Target.Row & ":G"  & Target.Row).Copy Destination:=Worksheets("Santé").Range("B" &  x)
         Sheets("Santé").Range("D" & x).ClearContents
         Sheets("Santé").Range("E" & x).ClearContents
    End If
End Sub
 
Re : Traduction ligne de code

Bonjour tototiti, alain62, 🙂

Code:
Worksheets("Opérations").Range("B" & Target.Row & ":G"  & Target.Row).Copy Destination:=Worksheets("Santé").Range("B" &  x)
'-----------------------------------------------------------------------
Sheets("Santé").Range("D" & x).ClearContents
         Sheets("Santé").Range("E" & x).ClearContents

Plus simple peut-être:

Code:
'Si Sheets("Opérations") est la feuille active ... 
Range("B" & Target.Row & ":G"  & Target.Row).Copy  Sheets("Santé").Range("B" &  x)

'--------------------------------------------------------------------------------
Sheets("Santé").Range(.Cells(x, 4), .Cells(x, 5)).ClearContents

@ tototiti: tu as mis bool... mais où est bill??? 😕 😉 😀



A+ 😎
 
Dernière édition:
Re : Traduction ligne de code

Re tototiti2008,

Merci à toi ça fonctionne.

Pourrais-tu me traduire le code pour plus de compréhesion avec des annotations et dans le cas ou il y aurait d'autres conditions (Voir fichier joint) comme pour carburant 5008 et tout mettre dans la feuile concernée? J'ai essayé mais ma façon d'écrire le code ne m'a apporté que des erreurs dans l'excécution...
Ce code est celui qui sera le plus utilisé dans mon classeur c'est pour cela que j'ai besoin de tenter de comprendre chaque ligne...

J'examine maintenant les suggestions de Lone-wolf

Merci à vous deux pour votre aide...
 

Pièces jointes

Dernière édition:
Re : Traduction ligne de code

Re,

Là en fait j'ai modifié un peu pour simplifier ma feuille.

Mais en fait la partie que tu m'as modifié représente un If et je dois en mettre d'autres à la suite de la même nature mais pas les mêmes catégories bien sur.
J'ai laissé dans l'exemple de quoi comprendre...
J'ai bien compris comment sélectionner les colonnes et l'utilisation dans ce cas de boolean et du vrai faux et là je bloque maintenant sur le fait d'ajouter à la suite d'autres if
 
Re : Traduction ligne de code

Re,

Je te commente le code existant, pour la suite avec les carburants j'ai du mal à répondre parce que je ne sais pas ce qui doit être fait si c'est du carburant

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    ' Gestion des dépenses santé (Honoraires)
Dim bool As Boolean 'bool est un booléen, initialisé à False et qui deviendra True si on doit réaliser la copie
bool = False 'initialisation
    
    If Target.Column = 11 And Target(1) = "Santé" Then 'Si on est en colonne K et que c'est écrit Santé
         If Target(1).Offset(0, -4) = "Dr" Then bool = True 'Si en colonne G c'est écrit Dr, bool passe à True
    ElseIf Target.Column = 7 And Target(1) = "Dr" Then 'Si on est en colonne G et que c'est écrit Dr
         If Target(1).Offset(0, 4) = "Santé" Then bool = True 'Si en colonne K c'est écrit Santé, bool passe à True
    End If
    If bool Then 'Si Bool est = True
         x = Sheets("Santé").Range("B" & Rows.Count).End(xlUp).Row + 1 'On fait la copie
         Worksheets("Opérations").Range("B" & Target.Row & ":G"  & Target.Row).Copy Destination:=Worksheets("Santé").Range("B" &  x)
         Sheets("Santé").Range("D" & x).ClearContents
         Sheets("Santé").Range("E" & x).ClearContents
    End If
    
End Sub
 
Dernière édition:
Re : Traduction ligne de code

Re,

Merci pour les annotations.

Alors il est vrai qu'avec des explications se serait mieux:

Si dans colonne K = carburant Et colonne J = 5008 alors copier plage (A:G) meme ligne vers feuille Peugeot 5008 à partir du B
(comme dans la premiere condition)

et ainsi de suite avec chaque nouvelle catégorie (si "santé" ET "Dr" alors ; si "carburant" ET "5008" alors ; etc...)

J'espère ne pas être trop compliqué.

Voilà merci de pour ton aide.
 
- 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
14
Affichages
423
Réponses
1
Affichages
443
  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
319
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…