Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion ana
  • 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 !

A

ana

Guest
bonjour,
j'ai perdu des données dans un tableau !
Dans ma feuille1 lorsque je mets une croix, ça me crée une ligne dans ma feuille "cotation".
Mon problème est qu'au final je n'ai pas le même nombre de croix que de lignes.

Est-il possible d'avoir un bouton (Macro) qui me scan toutes la plages des croix et sur une nouvelle feuille "récap" me recrée toutes les lignes ?

Voici la Macro que j'utilise pour créer les lignes en fonction des croix tapées.

Merci d'avance pour votre aide,
A.

------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Application.EnableEvents = False
If Not Intersect(Target, Range("I2:AL30000")) Is Nothing Then
If Target = "" Then
Target = "X"
'Worksheet_Change Target
Else
Target = ""
'Worksheet_Change Target
End If
Application.EnableEvents = True
End If
If Not Intersect(Target, Range("I2:AL30000")) Is Nothing And Selection.Rows.Count = 1 And Selection.Columns.Count = 1 Then
Select Case Target
Case "X"
Set MaDestination = Sheets("cotation").Range("A65536").End(xlUp).Offset(1, 0)
MaDestination.Value = Cells(1, Target.Column)
MaDestination.Offset(0, 1).Value = Cells(Target.Row, 2)
MaDestination.Offset(0, 2).Value = Cells(Target.Row, 4)
MaDestination.Offset(0, 3).Value = Cells(Target.Row, 8)
MaDestination.Offset(0, 4).Value = Cells(Target.Row, 5)
MaDestination.Offset(0, 6).Value = Cells(Target.Row, 6)
Case ""
For Each X In Sheets("cotation").Range("A2:" & Sheets("cotation").Range("A65536").End(xlUp).Address)
If X & X.Offset(0, 1) & X.Offset(0, 2) & X.Offset(0, 3) & X.Offset(0, 4) = Cells(1, Target.Column) &

Cells(Target.Row, 2) & Cells(Target.Row, 4) & Cells(Target.Row, 8) & Cells(Target.Row, 5) Then
X.EntireRow.Delete
Exit Sub
End If
Next
End Select
End If
End Sub
------------------------
 
Re : Macro

Bonjnour Ana, bonjour le forum,

Un fichier en pièce jointe aurait été le bienvenu... je te propose la macro suivante à adapter car tu ne précises pas où tu mets les X.

Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel
Dim dest As Range 'déclare la variable dest
 
Application.EnableEvents = False
For Each cel In Range("I2:I3000") 'boucle sur toutes les cellules cel de la colonne I (de 2 à 3000)(à adapter)
    If cel.Value = "X" Then 'condition : si la valeur de la cellule est "X"
        Set dest = Sheets("récap").Range("A65536").End(xlUp).Offset(1, 0) 'définit la variable dest
        Range(Cells(cel.Row, 10), Cells(cel.Row, 38)).Copy dest 'copie les colonnes J à AL de la ligne et les colle dans dest (à adapter)
    End If
Next cel 'prochaine cellule cel de la boucle
Application.EnableEvents = True
End Sub
 
Re : Macro

Merci pour cette macro.
Je l'ai adapté et elle fonctionne très bien !

Est-il possible qu'en plus du recopiage de la ligne, ça me rajoute l'entête de la colonne où se trouve la croix ?

Exemple : Avec la Macro, la croix qui se trouve dans la cellule I5, recopie les 8 colonnes précédentes et dans une colonne supplémentaire, je voudrais qu'elle m'indique l'entête de la colonne I.

Est-ce possible ?



Sub Macro1()
Dim cel As Range 'déclare la variable cel
Dim dest As Range 'déclare la variable dest

Application.EnableEvents = False
For Each cel In Range("I2:AL3000") 'boucle sur toutes les cellules cel de la colonne I (de 2 à 3000)(à adapter)
If cel.Value = "X" Then 'condition : si la valeur de la cellule est "X"
Set dest = Sheets("récap").Range("A65536").End(xlUp).Offset(1, 0) 'définit la variable dest
Range(Cells(cel.Row, 1), Cells(cel.Row, 8)).Copy dest 'copie les colonnes A à H de la ligne et les colle dans dest (à adapter)
End If
Next cel 'prochaine cellule cel de la boucle
Application.EnableEvents = True
End Sub
 
Re : Macro

Bonjour Ana, bonjor le forum,

la macro modifiée :

Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel
Dim dest As Range 'déclare la variable dest
 
Application.EnableEvents = False
 
For Each cel In Range("I2:AL3000") 'boucle sur toutes les cellules cel de la colonne I (de 2 à 3000)(à adapter)
    If cel.Value = "X" Then 'condition : si la valeur de la cellule est "X"
        Set dest = Sheets("récap").Range("A65536").End(xlUp).Offset(1, 0)  'définit la variable dest
        Range(Cells(cel.Row, 1), Cells(cel.Row, 8)).Copy dest 'copie les colonnes A à H de la ligne et les colle dans dest (à adapter)
        [COLOR=red]dest.Offset(0, 9).Value = Cells(1, cel.Column) 'copie l'en-tête en colonne G[/COLOR]
    End If
Next cel 'prochaine cellule cel de la boucle
 
Application.EnableEvents = True
End Sub
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
926
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
4
Affichages
742
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…