Copier des cellules en fonction de la valeur de la cellule adjacente

ptirouX

XLDnaute Nouveau
Bonjour,

Je cherche à réaliser dans un tableau une synthèse de cellules présentes sur plusieurs feuilles qui se créer en fonction d'une macro. Le nom de ces feuilles commence toujours par DSI (1,2,3,.....).

Si dans la colonne B de ces feuilles il est noté CT (pour Contrôle technique) alors il faut copier la description du contrôle qui est dans la cellule adjacente (par exemple C5 si CT se trouve en B5.) dans une autre feuille.

Comme je disais au début, les feuilles sont créées par l'utilisateur et sur chaque feuille il peut y avoir plusieurs Contrôles Techniques mais pas forcément les uns à la suite des autres.

Donc pour résumer, j'aimerais copier l'ensemble des CT présents sur les feuilles DSI1, DSI2,.... dans une autre feuille les uns en dessous des autres.

J'espère être clair car je m'y perds moi-même dans mes explications ^^ et malheureusement je ne peux pas mettre de fichier exemple.

Dans l'attente de vos réponses, bonne journée à tous!!!!
 

vgendron

XLDnaute Barbatruc
Re : Copier des cellules en fonction de la valeur de la cellule adjacente

Est ce que tu penses que je peux avec un seul bouton faire le duplication des DSI et des Page de garde DSI en même temps?

oui bien sur, il suffit d'écrire une boucle qui fait l'ensemble des opérations: au lieu de demander à l'utilisateur de saisir DSI ou PdG DSI, c'est la boucle qui le fait toute seule
 

ptirouX

XLDnaute Nouveau
Re : Copier des cellules en fonction de la valeur de la cellule adjacente

et pour réaliser la boucle je met and entre les 2 macro sur une mm feuille?

Sub dupliquer_feuilles_Pdg_DSI()

Dim i, nomb As Integer
Dim ongl As String
'demande le nombre de copies souhaitées
nomb = InputBox("Nombre de copies Pdg DSI1", "Nombre")

'ongl = "DSI n°"
'pour éviter de créer un DSI n° déjà existant, on demande le numéro du dernier (le plus grand)
dernier = InputBox("donnez le numéro du dernier DSI")
ongl = InputBox("PdG DSI1", "PdG DSI")
For i = 1 To nomb
Sheets(ongl & i).Select
Sheets(ongl & i).Copy After:=Sheets(i)
ActiveSheet.Name = ongl & i + dernier
If (i + CInt(dernier)) > 9 Then
dizaine = Int((i + CInt(dernier)) / 10)
unité = (i + CInt(dernier)) Mod 10
Else: unité = (i + CInt(dernier))
dizaine = 0
End If
ActiveSheet.Range("X20") = dizaine
ActiveSheet.Range("Y20") = unité


Next i
End Sub

and

Sub dupliquer_feuilles()

Dim i As Integer
Dim ongl As String, nomb As String
nomb = InputBox("Nombre de copie DSI", "Nombre")
nomb = nomb - 1
ongl = InputBox("DSI1", "DSI")
For i = 1 To nomb
Sheets(ongl & i).Select
Sheets(ongl & i).Copy After:=Sheets(i + 2)
ActiveSheet.Name = ongl & i + 1
ActiveSheet.Range("M3") = i + 1
Next i
End Sub
 

vgendron

XLDnaute Barbatruc
Re : Copier des cellules en fonction de la valeur de la cellule adjacente

Code:
Sub dupliquer_feuilles_Pdg_DSI()

 Dim i, nomb As Integer
 Dim ongl As String
 'demande le nombre de copies souhaitées
 nomb = InputBox("Nombre de copies de DSI et Pdg DSI", "Nombre")

 
 'pour éviter de créer un DSI n° déjà existant, on demande le numéro du dernier (le plus grand)
 dernier = InputBox("donnez le numéro du dernier DSI")
 
 
For i = 1 To nomb
    Sheets("DSI" & i).Select
    Sheets("DSI" & i).Copy After:=Sheets(i)
    ActiveSheet.Name = "DSI" & i + dernier
     
    Sheets("PdG DSI" & i).Select
    Sheets("PdG DSI" & i).Copy After:=Sheets(i)
    ActiveSheet.Name = "PdG DSI" & i + dernier
     
    If i + CInt(dernier) > 9 Then
        dizaine = Int((i + CInt(dernier)) / 10)
        unité = (i + CInt(dernier)) Mod 10
    Else: dizaine = 0
        unité = CInt(dernier) + i
    End If
    
    ActiveSheet.Range("X20") = dizaine
    ActiveSheet.Range("Y20") = unité
 
Next i
 End Sub
 

ptirouX

XLDnaute Nouveau
Re : Copier des cellules en fonction de la valeur de la cellule adjacente

he b c génial tout fonctionnement parfaitement.

Merci encore vgendron de ta patience et du partage de connaissance .

En fait pour faire la boucle il suffit de copier shunter le début d'un programme à savoir le Sub ... et le coller à la suite de l'autre?

Bonne continuation et si cela ne te dérange pas à l'occaz je te recontacte en mp si j'ai quelques proble de VB inextricables ^^

A+

Julien
 

vgendron

XLDnaute Barbatruc
Re : Copier des cellules en fonction de la valeur de la cellule adjacente

En fait pour faire la boucle il suffit de copier shunter le début d'un programme à savoir le Sub ... et le coller à la suite de l'autre?

En effet, puisque toutes les infos sont dispo pour faire les deux opérations en meme temps.. autant ne pas se priver
ca évite de faire deux boucles séparées qui doivent chercher chacune leur tour la meme info.

après.. tout dépend de ce que tu veux faire par la suite.. parfois.. il peut etre utile de séparer..
par exemple.. si tu veux créer un DSI, mais PAS de PdG DSI.... ;-)
 

ptirouX

XLDnaute Nouveau
Re : Copier des cellules en fonction de la valeur de la cellule adjacente

Bonjour tout le monde je me permet de rouvrir le topic car je galère un peu beaucoup pour faire une modif sur la macro.

En fait lorsque je clique pour faire la synthèse des CT, il faudrait que sur la feuille de synthèse, il me note le n° de la séquence à la place du mot CT.

Dans le fichier test mis plus haut dans le topic, il faudrait par exemple copier la valeur de la cellule en colonne B de la feuille DSI de la ligne où apparait le CT en colonne B de la feuille de synthèse afin de pouvoir repérer rapidement la référence.

Merci d'avance et bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 238
Membres
103 162
dernier inscrit
fcfg